• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // This file is part of ICU4X. For terms of use, please see the file
2 // called LICENSE at the top level of the ICU4X source tree
3 // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
4 
5 mod fixtures;
6 
7 use icu_locale::{LocaleCanonicalizer, LocaleExpander, TransformResult};
8 use icu_locale_core::Locale;
9 use writeable::assert_writeable_eq;
10 
11 #[test]
test_maximize()12 fn test_maximize() {
13     let lc = LocaleExpander::new_extended();
14 
15     let testcases: Vec<fixtures::CanonicalizationTest> =
16         serde_json::from_str(include_str!("fixtures/maximize.json"))
17             .expect("Failed to read a fixture");
18 
19     for case in testcases {
20         if let Some(true) = case.disabled {
21             continue;
22         }
23         let mut locale: Locale = case.input.parse().unwrap();
24         let unmodified = locale.clone();
25         let result = lc.maximize(&mut locale.id);
26         assert_writeable_eq!(locale, case.output, "{:?}", case);
27         if result == TransformResult::Modified {
28             assert_ne!(locale, unmodified, "{:?}", case);
29         } else {
30             assert_eq!(locale, unmodified, "{:?}", case);
31         }
32     }
33 }
34 
35 #[test]
test_minimize()36 fn test_minimize() {
37     let lc = LocaleExpander::new_extended();
38 
39     let testcases: Vec<fixtures::CanonicalizationTest> =
40         serde_json::from_str(include_str!("fixtures/minimize.json"))
41             .expect("Failed to read a fixture");
42 
43     for case in testcases {
44         if let Some(true) = case.disabled {
45             continue;
46         }
47         let mut locale: Locale = case.input.parse().unwrap();
48         let unmodified = locale.clone();
49         let result = lc.minimize(&mut locale.id);
50         assert_writeable_eq!(locale, case.output, "{:?}", case);
51         if result == TransformResult::Modified {
52             assert_ne!(locale, unmodified, "{:?}", case);
53         } else {
54             assert_eq!(locale, unmodified, "{:?}", case);
55         }
56     }
57 }
58 
59 #[test]
test_canonicalize()60 fn test_canonicalize() {
61     let lc = LocaleCanonicalizer::new_extended();
62 
63     let testcases: Vec<fixtures::CanonicalizationTest> =
64         serde_json::from_str(include_str!("fixtures/canonicalize.json"))
65             .expect("Failed to read a fixture");
66 
67     for case in testcases {
68         if let Some(true) = case.disabled {
69             continue;
70         }
71         let mut locale: Locale = case.input.parse().expect("Unable to parse input");
72         let unmodified = locale.clone();
73         let result = lc.canonicalize(&mut locale);
74         assert_writeable_eq!(locale, case.output, "{:?}", case);
75         if result == TransformResult::Modified {
76             assert_ne!(locale, unmodified, "{:?}", case);
77         } else {
78             assert_eq!(locale, unmodified, "{:?}", case);
79         }
80     }
81 }
82