Skip to content

Commit

Permalink
Adding blob tests (#3719)
Browse files Browse the repository at this point in the history
  • Loading branch information
robertbastian authored Jul 21, 2023
1 parent 5f40b1d commit 105e7ec
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 1 deletion.
76 changes: 76 additions & 0 deletions provider/blob/src/blob_data_provider.rs
Original file line number Diff line number Diff line change
Expand Up @@ -136,3 +136,79 @@ impl BufferProvider for BlobDataProvider {
})
}
}

#[cfg(test)]
mod test {
use super::*;
use crate::export::*;
use icu_provider::datagen::*;
use icu_provider::hello_world::*;

#[icu_provider::data_struct(marker(HelloSingletonV1Marker, "hello/singleton@1", singleton))]
#[derive(Clone, Copy)]
pub struct HelloSingletonV1;

#[test]
fn test_empty() {
let mut blob: Vec<u8> = Vec::new();

{
let mut exporter = BlobExporter::new_with_sink(Box::new(&mut blob));

exporter
.flush_with_fallback(HelloWorldV1Marker::KEY, FallbackMode::None)
.unwrap();

exporter.close().unwrap();
}

let provider = BlobDataProvider::try_new_from_blob(blob.into()).unwrap();

assert!(matches!(
provider.load_buffer(HelloWorldV1Marker::KEY, Default::default()),
Err(DataError {
kind: DataErrorKind::MissingLocale,
..
})
));
}

#[test]
fn test_singleton() {
let mut blob: Vec<u8> = Vec::new();

{
let mut exporter = BlobExporter::new_with_sink(Box::new(&mut blob));

exporter
.flush_with_fallback(HelloSingletonV1Marker::KEY, FallbackMode::None)
.unwrap();

exporter.close().unwrap();
}

let provider = BlobDataProvider::try_new_from_blob(blob.into()).unwrap();

assert!(matches!(
provider.load_buffer(
HelloSingletonV1Marker::KEY,
DataRequest {
locale: &icu_locid::locale!("de").into(),
metadata: Default::default()
}
),
Err(DataError {
kind: DataErrorKind::ExtraneousLocale,
..
})
));

assert!(matches!(
provider.load_buffer(HelloSingletonV1Marker::KEY, Default::default()),
Err(DataError {
kind: DataErrorKind::MissingLocale,
..
})
));
}
}
2 changes: 1 addition & 1 deletion provider/blob/src/blob_schema.rs
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ impl<'data> BlobSchemaV1<'data> {
// Note: We could check that every index occurs at least once, but that's a more expensive
// operation, so we will just check for the min and max index.
let mut seen_min = false;
let mut seen_max = false;
let mut seen_max = self.buffers.is_empty();
for cursor in self.keys.iter0() {
for (locale, idx) in cursor.iter1_copied() {
debug_assert!(idx < self.buffers.len() || locale == Index32U8::SENTINEL);
Expand Down

0 comments on commit 105e7ec

Please sign in to comment.