blob: 06e360f53ca5440bb9f57267009024adf6e020c4 [file] [log] [blame]
// 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
// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
mod fixtures;
mod helpers;
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 path = "./tests/fixtures/maximize.json";
let testcases: Vec<fixtures::CanonicalizationTest> =
helpers::read_fixture(path).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);
if result == TransformResult::Modified {
assert_ne!(locale, unmodified);
} else {
assert_eq!(locale, unmodified);
}
}
}
#[test]
fn test_minimize() {
let lc = LocaleExpander::new_extended();
let path = "./tests/fixtures/minimize.json";
let testcases: Vec<fixtures::CanonicalizationTest> =
helpers::read_fixture(path).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);
if result == TransformResult::Modified {
assert_ne!(locale, unmodified);
} else {
assert_eq!(locale, unmodified);
}
}
}
#[test]
fn test_canonicalize() {
let lc = LocaleCanonicalizer::new();
let path = "./tests/fixtures/canonicalize.json";
let testcases: Vec<fixtures::CanonicalizationTest> =
helpers::read_fixture(path).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);
if result == TransformResult::Modified {
assert_ne!(locale, unmodified);
} else {
assert_eq!(locale, unmodified);
}
}
}