use icu_casemap::CaseMapper;
use icu_normalizer::ComposingNormalizer;
pub fn name_key_for_display_name(display_name: &str) -> String {
let normalizer = ComposingNormalizer::new_nfc();
let normalized = normalizer.normalize(display_name);
let folded = CaseMapper::new().fold_string(&normalized);
normalizer.normalize(&folded).into_owned()
}
#[cfg(test)]
mod tests {
use super::name_key_for_display_name;
#[test]
fn nfc_casefold_v0_normalizes_and_casefolds() {
let decomposed = "Cafe\u{301}.TXT";
let composed = "CAFÉ.txt";
let left = name_key_for_display_name(decomposed);
let right = name_key_for_display_name(composed);
assert_eq!(left, right);
assert_eq!(left, "café.txt");
}
}