#![allow(rustdoc::private_doc_tests)]
use unicode_normalization::UnicodeNormalization;
pub(crate) fn normalize_nfc(input: &str) -> String {
input.nfc().collect()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn ascii_unchanged() {
assert_eq!(normalize_nfc("hello world"), "hello world");
}
#[test]
fn accented_nfc_canonical() {
let nfc = normalize_nfc("Olá");
assert_eq!(nfc, "Olá");
}
#[test]
fn nfd_input_gets_canonicalized() {
let nfd = "Ola\u{0301}";
let nfc = normalize_nfc(nfd);
assert_eq!(nfc, "Olá");
}
#[test]
fn japanese_katakana_nfc() {
let original = "コンニチハ";
let nfc = normalize_nfc(original);
assert_eq!(nfc, "コンニチハ");
}
#[test]
fn emoji_nfc_unchanged() {
let s = "Hello 👋 World 🌍";
let nfc = normalize_nfc(s);
assert!(nfc.contains("👋"));
assert!(nfc.contains("🌍"));
}
#[test]
fn empty_string_unchanged() {
assert_eq!(normalize_nfc(""), "");
}
}