#[must_use]
pub fn len_utf16(text: &str) -> usize {
text.chars().map(char::len_utf16).sum()
}
#[cfg(test)]
mod tests {
use super::len_utf16;
#[test]
fn ascii_is_one_unit_each() {
assert_eq!(len_utf16("hello"), 5);
assert_eq!(len_utf16(""), 0);
}
#[test]
fn bmp_scalar_is_one_unit() {
assert_eq!("Ć©".len(), 2);
assert_eq!(len_utf16("Ć©"), 1);
}
#[test]
fn astral_scalar_is_two_units() {
assert_eq!("š".len(), 4);
assert_eq!(len_utf16("š"), 2);
}
#[test]
fn mixed_string_sums_per_scalar() {
assert_eq!(len_utf16("aĆ©šb"), 5);
}
}