Source code
Revision control
Copy as Markdown
Other Tools
// 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
mod fixtures;
use icu_locid::Locale;
use icu_locid_transform::{LocaleCanonicalizer, LocaleExpander, TransformResult};
use writeable::assert_writeable_eq;
#[test]
fn test_maximize() {
let lc = LocaleExpander::new_extended();
let testcases: Vec<fixtures::CanonicalizationTest> =
serde_json::from_str(include_str!("fixtures/maximize.json"))
.expect("Failed to read a fixture");
for case in testcases {
if let Some(true) = case.disabled {
continue;
}
let mut locale: Locale = case.input.parse().unwrap();
let unmodified = locale.clone();
let result = lc.maximize(&mut locale);
assert_writeable_eq!(locale, case.output, "{:?}", case);
if result == TransformResult::Modified {
assert_ne!(locale, unmodified, "{:?}", case);
} else {
assert_eq!(locale, unmodified, "{:?}", case);
}
}
}
#[test]
fn test_minimize() {
let lc = LocaleExpander::new_extended();
let testcases: Vec<fixtures::CanonicalizationTest> =
serde_json::from_str(include_str!("fixtures/minimize.json"))
.expect("Failed to read a fixture");
for case in testcases {
if let Some(true) = case.disabled {
continue;
}
let mut locale: Locale = case.input.parse().unwrap();
let unmodified = locale.clone();
let result = lc.minimize(&mut locale);
assert_writeable_eq!(locale, case.output, "{:?}", case);
if result == TransformResult::Modified {
assert_ne!(locale, unmodified, "{:?}", case);
} else {
assert_eq!(locale, unmodified, "{:?}", case);
}
}
}
#[test]
fn test_canonicalize() {
let lc = LocaleCanonicalizer::new();
let testcases: Vec<fixtures::CanonicalizationTest> =
serde_json::from_str(include_str!("fixtures/canonicalize.json"))
.expect("Failed to read a fixture");
for case in testcases {
if let Some(true) = case.disabled {
continue;
}
let mut locale: Locale = case.input.parse().expect("Unable to parse input");
let unmodified = locale.clone();
let result = lc.canonicalize(&mut locale);
assert_writeable_eq!(locale, case.output, "{:?}", case);
if result == TransformResult::Modified {
assert_ne!(locale, unmodified, "{:?}", case);
} else {
assert_eq!(locale, unmodified, "{:?}", case);
}
}
}