unit.js (4461B)
1 // |reftest| skip-if(!this.hasOwnProperty("Intl")) 2 3 const { 4 Nan, Inf, Integer, MinusSign, PlusSign, Literal, 5 Unit 6 } = NumberFormatParts; 7 8 const testcases = [ 9 { 10 locale: "en", 11 options: { 12 style: "unit", 13 unit: "meter", 14 unitDisplay: "short", 15 }, 16 values: [ 17 {value: +0, string: "0 m", parts: [Integer("0"), Literal(" "), Unit("m")]}, 18 {value: -0, string: "-0 m", parts: [MinusSign("-"), Integer("0"), Literal(" "), Unit("m")]}, 19 {value: 0n, string: "0 m", parts: [Integer("0"), Literal(" "), Unit("m")]}, 20 21 {value: 1, string: "1 m", parts: [Integer("1"), Literal(" "), Unit("m")]}, 22 {value: -1, string: "-1 m", parts: [MinusSign("-"), Integer("1"), Literal(" "), Unit("m")]}, 23 {value: 1n, string: "1 m", parts: [Integer("1"), Literal(" "), Unit("m")]}, 24 {value: -1n, string: "-1 m", parts: [MinusSign("-"), Integer("1"), Literal(" "), Unit("m")]}, 25 26 {value: Infinity, string: "∞ m", parts: [Inf("∞"), Literal(" "), Unit("m")]}, 27 {value: -Infinity, string: "-∞ m", parts: [MinusSign("-"), Inf("∞"), Literal(" "), Unit("m")]}, 28 29 {value: NaN, string: "NaN m", parts: [Nan("NaN"), Literal(" "), Unit("m")]}, 30 {value: -NaN, string: "NaN m", parts: [Nan("NaN"), Literal(" "), Unit("m")]}, 31 ], 32 }, 33 34 { 35 locale: "en", 36 options: { 37 style: "unit", 38 unit: "meter", 39 unitDisplay: "narrow", 40 }, 41 values: [ 42 {value: +0, string: "0m", parts: [Integer("0"), Unit("m")]}, 43 {value: -0, string: "-0m", parts: [MinusSign("-"), Integer("0"), Unit("m")]}, 44 {value: 0n, string: "0m", parts: [Integer("0"), Unit("m")]}, 45 46 {value: 1, string: "1m", parts: [Integer("1"), Unit("m")]}, 47 {value: -1, string: "-1m", parts: [MinusSign("-"), Integer("1"), Unit("m")]}, 48 {value: 1n, string: "1m", parts: [Integer("1"), Unit("m")]}, 49 {value: -1n, string: "-1m", parts: [MinusSign("-"), Integer("1"), Unit("m")]}, 50 51 {value: Infinity, string: "∞m", parts: [Inf("∞"), Unit("m")]}, 52 {value: -Infinity, string: "-∞m", parts: [MinusSign("-"), Inf("∞"), Unit("m")]}, 53 54 {value: NaN, string: "NaNm", parts: [Nan("NaN"), Unit("m")]}, 55 {value: -NaN, string: "NaNm", parts: [Nan("NaN"), Unit("m")]}, 56 ], 57 }, 58 59 { 60 locale: "en", 61 options: { 62 style: "unit", 63 unit: "meter", 64 unitDisplay: "long", 65 }, 66 values: [ 67 {value: +0, string: "0 meters", parts: [Integer("0"), Literal(" "), Unit("meters")]}, 68 {value: -0, string: "-0 meters", parts: [MinusSign("-"), Integer("0"), Literal(" "), Unit("meters")]}, 69 {value: 0n, string: "0 meters", parts: [Integer("0"), Literal(" "), Unit("meters")]}, 70 71 {value: 1, string: "1 meter", parts: [Integer("1"), Literal(" "), Unit("meter")]}, 72 {value: -1, string: "-1 meter", parts: [MinusSign("-"), Integer("1"), Literal(" "), Unit("meter")]}, 73 {value: 1n, string: "1 meter", parts: [Integer("1"), Literal(" "), Unit("meter")]}, 74 {value: -1n, string: "-1 meter", parts: [MinusSign("-"), Integer("1"), Literal(" "), Unit("meter")]}, 75 76 {value: Infinity, string: "∞ meters", parts: [Inf("∞"), Literal(" "), Unit("meters")]}, 77 {value: -Infinity, string: "-∞ meters", parts: [MinusSign("-"), Inf("∞"), Literal(" "), Unit("meters")]}, 78 79 {value: NaN, string: "NaN meters", parts: [Nan("NaN"), Literal(" "), Unit("meters")]}, 80 {value: -NaN, string: "NaN meters", parts: [Nan("NaN"), Literal(" "), Unit("meters")]}, 81 ], 82 }, 83 84 // Ensure the correct compound unit is automatically selected by ICU. For 85 // example instead of "50 chilometri al orari", 50 km/h should return 86 // "50 chilometri orari" in Italian. 87 88 { 89 locale: "it", 90 options: { 91 style: "unit", 92 unit: "kilometer-per-hour", 93 unitDisplay: "long", 94 }, 95 values: [ 96 {value: 50, string: "50 chilometri orari", parts: [Integer("50"), Literal(" "), Unit("chilometri orari")]}, 97 ], 98 }, 99 ]; 100 101 runNumberFormattingTestcases(testcases); 102 103 if (typeof reportCompare === "function") 104 reportCompare(true, true);