summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/Intl/NumberFormat/unit.js
blob: 7abc5142e0197c96efedf26e714f4993e50fc5cb (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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
// |reftest| skip-if(!this.hasOwnProperty("Intl"))

const {
    Nan, Inf, Integer, MinusSign, PlusSign, Literal,
    Unit
} = NumberFormatParts;

const testcases = [
    {
        locale: "en",
        options: {
            style: "unit",
            unit: "meter",
            unitDisplay: "short",
        },
        values: [
            {value: +0, string: "0 m", parts: [Integer("0"), Literal(" "), Unit("m")]},
            {value: -0, string: "-0 m", parts: [MinusSign("-"), Integer("0"), Literal(" "), Unit("m")]},
            {value: 0n, string: "0 m", parts: [Integer("0"), Literal(" "), Unit("m")]},

            {value:   1, string: "1 m", parts: [Integer("1"), Literal(" "), Unit("m")]},
            {value:  -1, string: "-1 m", parts: [MinusSign("-"), Integer("1"), Literal(" "), Unit("m")]},
            {value:  1n, string: "1 m", parts: [Integer("1"), Literal(" "), Unit("m")]},
            {value: -1n, string: "-1 m", parts: [MinusSign("-"), Integer("1"), Literal(" "), Unit("m")]},

            {value:  Infinity, string: "∞ m", parts: [Inf("∞"), Literal(" "), Unit("m")]},
            {value: -Infinity, string: "-∞ m", parts: [MinusSign("-"), Inf("∞"), Literal(" "), Unit("m")]},

            {value:  NaN, string: "NaN m", parts: [Nan("NaN"), Literal(" "), Unit("m")]},
            {value: -NaN, string: "NaN m", parts: [Nan("NaN"), Literal(" "), Unit("m")]},
        ],
    },

    {
        locale: "en",
        options: {
            style: "unit",
            unit: "meter",
            unitDisplay: "narrow",
        },
        values: [
            {value: +0, string: "0m", parts: [Integer("0"), Unit("m")]},
            {value: -0, string: "-0m", parts: [MinusSign("-"), Integer("0"), Unit("m")]},
            {value: 0n, string: "0m", parts: [Integer("0"), Unit("m")]},

            {value:   1, string: "1m", parts: [Integer("1"), Unit("m")]},
            {value:  -1, string: "-1m", parts: [MinusSign("-"), Integer("1"), Unit("m")]},
            {value:  1n, string: "1m", parts: [Integer("1"), Unit("m")]},
            {value: -1n, string: "-1m", parts: [MinusSign("-"), Integer("1"), Unit("m")]},

            {value:  Infinity, string: "∞m", parts: [Inf("∞"), Unit("m")]},
            {value: -Infinity, string: "-∞m", parts: [MinusSign("-"), Inf("∞"), Unit("m")]},

            {value:  NaN, string: "NaNm", parts: [Nan("NaN"), Unit("m")]},
            {value: -NaN, string: "NaNm", parts: [Nan("NaN"), Unit("m")]},
        ],
    },

    {
        locale: "en",
        options: {
            style: "unit",
            unit: "meter",
            unitDisplay: "long",
        },
        values: [
            {value: +0, string: "0 meters", parts: [Integer("0"), Literal(" "), Unit("meters")]},
            {value: -0, string: "-0 meters", parts: [MinusSign("-"), Integer("0"), Literal(" "), Unit("meters")]},
            {value: 0n, string: "0 meters", parts: [Integer("0"), Literal(" "), Unit("meters")]},

            {value:   1, string: "1 meter", parts: [Integer("1"), Literal(" "), Unit("meter")]},
            {value:  -1, string: "-1 meter", parts: [MinusSign("-"), Integer("1"), Literal(" "), Unit("meter")]},
            {value:  1n, string: "1 meter", parts: [Integer("1"), Literal(" "), Unit("meter")]},
            {value: -1n, string: "-1 meter", parts: [MinusSign("-"), Integer("1"), Literal(" "), Unit("meter")]},

            {value:  Infinity, string: "∞ meters", parts: [Inf("∞"), Literal(" "), Unit("meters")]},
            {value: -Infinity, string: "-∞ meters", parts: [MinusSign("-"), Inf("∞"), Literal(" "), Unit("meters")]},

            {value:  NaN, string: "NaN meters", parts: [Nan("NaN"), Literal(" "), Unit("meters")]},
            {value: -NaN, string: "NaN meters", parts: [Nan("NaN"), Literal(" "), Unit("meters")]},
        ],
    },

    // Ensure the correct compound unit is automatically selected by ICU. For
    // example instead of "50 chilometri al orari", 50 km/h should return
    // "50 chilometri orari" in Italian.

    {
        locale: "it",
        options: {
            style: "unit",
            unit: "kilometer-per-hour",
            unitDisplay: "long",
        },
        values: [
            {value: 50, string: "50 chilometri orari", parts: [Integer("50"), Literal(" "), Unit("chilometri orari")]},
        ],
    },
];

runNumberFormattingTestcases(testcases);

if (typeof reportCompare === "function")
    reportCompare(true, true);