Skip to content
Merged
Prev Previous commit
Next Next commit
Add simple test
  • Loading branch information
sffc committed Dec 1, 2025
commit 923427a315a317c67123c70e9790e1d536c49c30
6 changes: 6 additions & 0 deletions utils/zerotrie/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,12 @@ bench = false # This option is required for Benchmark CI
default = []
alloc = ["zerovec?/alloc"]
databake = ["dep:databake", "zerovec?/databake"]
dense = ["dep:zerovec"]
litemap = ["dep:litemap", "alloc"]
serde = ["dep:serde_core", "dep:litemap", "alloc", "litemap/serde", "zerovec?/serde"]
yoke = ["dep:yoke"]
zerofrom = ["dep:zerofrom"]
zerovec = ["dep:zerovec"]

[[bench]]
name = "overview"
Expand All @@ -70,6 +72,10 @@ required-features = ["alloc", "litemap"]
name = "builder_test"
required-features = ["alloc", "litemap"]

[[test]]
name = "dense_test"
required-features = ["alloc", "dense"]

[[test]]
name = "locale_aux_test"
required-features = ["alloc", "litemap"]
2 changes: 1 addition & 1 deletion utils/zerotrie/src/builder/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@

mod branch_meta;
pub(crate) mod bytestr;
#[cfg(all(feature = "alloc", feature = "zerovec"))]
#[cfg(all(feature = "alloc", feature = "dense"))]
pub(crate) mod dense;
pub(crate) mod konst;
#[cfg(feature = "litemap")]
Expand Down
2 changes: 1 addition & 1 deletion utils/zerotrie/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ extern crate alloc;
mod builder;
mod byte_phf;
pub mod cursor;
#[cfg(feature = "zerovec")]
#[cfg(feature = "dense")]
pub mod dense;
mod error;
#[macro_use]
Expand Down
36 changes: 36 additions & 0 deletions utils/zerotrie/tests/dense_test.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
// This file is part of ICU4X. For terms of use, please see the file
// called LICENSE at the top level of the ICU4X source tree
// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).

use std::collections::BTreeMap;
use zerotrie::dense::DenseSparse2dAsciiWithFixedDelimiterOwned;

const SIMPLE_DATA: &[&str] = &[
"ar/FR", "ar/IR", "ar/SA", "ar/UK", "ar/US", "en/AU", "en/FR", "en/UK", "en/US", "fr/FR",
"fr/SA", "fr/UK", "fr/US", "it/IT",
];

fn strings_to_2d_btreemap<'a>(strings: &[&'a str]) -> BTreeMap<&'a str, BTreeMap<&'a str, usize>> {
let mut map = BTreeMap::<&str, BTreeMap<&str, usize>>::default();
for (value, (prefix, suffix)) in strings.iter().flat_map(|s| s.split_once('/')).enumerate() {
map.entry(prefix).or_default().insert(suffix, value);
}
map
}

#[test]
fn test_simple() {
let data_as_map = strings_to_2d_btreemap(SIMPLE_DATA);
let dense =
DenseSparse2dAsciiWithFixedDelimiterOwned::try_from_btree_map_str(&data_as_map, b'/')
.unwrap();
for (prefix, values) in data_as_map.iter() {
for (suffix, value) in values.iter() {
assert_eq!(
dense.as_borrowed().get(prefix, suffix),
Some(*value),
"{prefix}/{suffix}"
);
}
}
}