summaryrefslogtreecommitdiffstats
path: root/third_party/rust/icu_locid_transform/tests/locale_canonicalizer.rs
blob: 06e360f53ca5440bb9f57267009024adf6e020c4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
// 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);
        }
    }
}