use unicode_normalization::UnicodeNormalization;
#[must_use]
pub fn normalize(input: &str) -> String {
input.nfd().collect()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn nfc_and_nfd_e_acute_compare_equal() {
let nfc = "\u{00E9}"; let nfd = "e\u{0301}"; assert_eq!(normalize(nfc), normalize(nfd));
}
#[test]
fn lowercased_nfc_and_nfd_compare_equal() {
let nfc = "\u{00E9}";
let nfd = "e\u{0301}";
assert_eq!(normalize(nfc).to_lowercase(), normalize(nfd).to_lowercase());
}
#[test]
fn cyrillic_round_trips() {
let s = "Кириллица";
assert_eq!(normalize(&normalize(s)), normalize(s));
}
#[test]
fn ascii_passthrough() {
let s = "hello world";
assert_eq!(normalize(s), s);
}
#[test]
fn empty_string() {
assert_eq!(normalize(""), "");
}
}