sign-display.js (7459B)
1 // |reftest| skip-if(!this.hasOwnProperty("Intl")) 2 3 const { 4 Nan, Inf, Integer, MinusSign, PlusSign, Decimal, Fraction 5 } = NumberFormatParts; 6 7 const testcases = [ 8 // "auto": Show the sign on negative numbers only. 9 { 10 locale: "en", 11 options: { 12 signDisplay: "auto", 13 }, 14 values: [ 15 {value: +0, string: "0", parts: [Integer("0")]}, 16 {value: -0, string: "-0", parts: [MinusSign("-"), Integer("0")]}, 17 {value: 0n, string: "0", parts: [Integer("0")]}, 18 19 {value: 1, string: "1", parts: [Integer("1")]}, 20 {value: -1, string: "-1", parts: [MinusSign("-"), Integer("1")]}, 21 {value: 1n, string: "1", parts: [Integer("1")]}, 22 {value: -1n, string: "-1", parts: [MinusSign("-"), Integer("1")]}, 23 24 {value: 0.1, string: "0.1", parts: [Integer("0"), Decimal("."), Fraction("1")]}, 25 {value: -0.1, string: "-0.1", parts: [MinusSign("-"), Integer("0"), Decimal("."), Fraction("1")]}, 26 27 {value: 0.9, string: "0.9", parts: [Integer("0"), Decimal("."), Fraction("9")]}, 28 {value: -0.9, string: "-0.9", parts: [MinusSign("-"), Integer("0"), Decimal("."), Fraction("9")]}, 29 30 {value: Infinity, string: "∞", parts: [Inf("∞")]}, 31 {value: -Infinity, string: "-∞", parts: [MinusSign("-"), Inf("∞")]}, 32 33 {value: NaN, string: "NaN", parts: [Nan("NaN")]}, 34 {value: -NaN, string: "NaN", parts: [Nan("NaN")]}, 35 ], 36 }, 37 38 // "never": Show the sign on neither positive nor negative numbers. 39 { 40 locale: "en", 41 options: { 42 signDisplay: "never", 43 }, 44 values: [ 45 {value: +0, string: "0", parts: [Integer("0")]}, 46 {value: -0, string: "0", parts: [Integer("0")]}, 47 {value: 0n, string: "0", parts: [Integer("0")]}, 48 49 {value: 1, string: "1", parts: [Integer("1")]}, 50 {value: -1, string: "1", parts: [Integer("1")]}, 51 {value: 1n, string: "1", parts: [Integer("1")]}, 52 {value: -1n, string: "1", parts: [Integer("1")]}, 53 54 {value: 0.1, string: "0.1", parts: [Integer("0"), Decimal("."), Fraction("1")]}, 55 {value: -0.1, string: "0.1", parts: [Integer("0"), Decimal("."), Fraction("1")]}, 56 57 {value: 0.9, string: "0.9", parts: [Integer("0"), Decimal("."), Fraction("9")]}, 58 {value: -0.9, string: "0.9", parts: [Integer("0"), Decimal("."), Fraction("9")]}, 59 60 {value: Infinity, string: "∞", parts: [Inf("∞")]}, 61 {value: -Infinity, string: "∞", parts: [Inf("∞")]}, 62 63 {value: NaN, string: "NaN", parts: [Nan("NaN")]}, 64 {value: -NaN, string: "NaN", parts: [Nan("NaN")]}, 65 ], 66 }, 67 68 // "always": Show the sign on positive and negative numbers including zero. 69 { 70 locale: "en", 71 options: { 72 signDisplay: "always", 73 }, 74 values: [ 75 {value: +0, string: "+0", parts: [PlusSign("+"), Integer("0")]}, 76 {value: -0, string: "-0", parts: [MinusSign("-"), Integer("0")]}, 77 {value: 0n, string: "+0", parts: [PlusSign("+"), Integer("0")]}, 78 79 {value: 1, string: "+1", parts: [PlusSign("+"), Integer("1")]}, 80 {value: -1, string: "-1", parts: [MinusSign("-"), Integer("1")]}, 81 {value: 1n, string: "+1", parts: [PlusSign("+"), Integer("1")]}, 82 {value: -1n, string: "-1", parts: [MinusSign("-"), Integer("1")]}, 83 84 {value: 0.1, string: "+0.1", parts: [PlusSign("+"), Integer("0"), Decimal("."), Fraction("1")]}, 85 {value: -0.1, string: "-0.1", parts: [MinusSign("-"), Integer("0"), Decimal("."), Fraction("1")]}, 86 87 {value: 0.9, string: "+0.9", parts: [PlusSign("+"), Integer("0"), Decimal("."), Fraction("9")]}, 88 {value: -0.9, string: "-0.9", parts: [MinusSign("-"), Integer("0"), Decimal("."), Fraction("9")]}, 89 90 {value: Infinity, string: "+∞", parts: [PlusSign("+"), Inf("∞")]}, 91 {value: -Infinity, string: "-∞", parts: [MinusSign("-"), Inf("∞")]}, 92 93 {value: NaN, string: "+NaN", parts: [PlusSign("+"), Nan("NaN")]}, 94 {value: -NaN, string: "+NaN", parts: [PlusSign("+"), Nan("NaN")]}, 95 ], 96 }, 97 98 // "exceptZero": Show the sign on positive and negative numbers but not zero. 99 { 100 locale: "en", 101 options: { 102 signDisplay: "exceptZero", 103 }, 104 values: [ 105 {value: +0, string: "0", parts: [Integer("0")]}, 106 {value: -0, string: "0", parts: [Integer("0")]}, 107 {value: 0n, string: "0", parts: [Integer("0")]}, 108 109 {value: 1, string: "+1", parts: [PlusSign("+"), Integer("1")]}, 110 {value: -1, string: "-1", parts: [MinusSign("-"), Integer("1")]}, 111 {value: 1n, string: "+1", parts: [PlusSign("+"), Integer("1")]}, 112 {value: -1n, string: "-1", parts: [MinusSign("-"), Integer("1")]}, 113 114 {value: 0.1, string: "+0.1", parts: [PlusSign("+"), Integer("0"), Decimal("."), Fraction("1")]}, 115 {value: -0.1, string: "-0.1", parts: [MinusSign("-"), Integer("0"), Decimal("."), Fraction("1")]}, 116 117 {value: 0.9, string: "+0.9", parts: [PlusSign("+"), Integer("0"), Decimal("."), Fraction("9")]}, 118 {value: -0.9, string: "-0.9", parts: [MinusSign("-"), Integer("0"), Decimal("."), Fraction("9")]}, 119 120 {value: Infinity, string: "+∞", parts: [PlusSign("+"), Inf("∞")]}, 121 {value: -Infinity, string: "-∞", parts: [MinusSign("-"), Inf("∞")]}, 122 123 {value: NaN, string: "NaN", parts: [Nan("NaN")]}, 124 {value: -NaN, string: "NaN", parts: [Nan("NaN")]}, 125 ], 126 }, 127 128 // Tests with suppressed fractional digits. 129 130 // "auto": Show the sign on negative numbers only. 131 { 132 locale: "en", 133 options: { 134 signDisplay: "auto", 135 maximumFractionDigits: 0, 136 }, 137 values: [ 138 {value: +0.1, string: "0", parts: [Integer("0")]}, 139 {value: -0.1, string: "-0", parts: [MinusSign("-"), Integer("0")]}, 140 ], 141 }, 142 143 // "never": Show the sign on neither positive nor negative numbers. 144 { 145 locale: "en", 146 options: { 147 signDisplay: "never", 148 maximumFractionDigits: 0, 149 }, 150 values: [ 151 {value: +0.1, string: "0", parts: [Integer("0")]}, 152 {value: -0.1, string: "0", parts: [Integer("0")]}, 153 ], 154 }, 155 156 // "always": Show the sign on positive and negative numbers including zero. 157 { 158 locale: "en", 159 options: { 160 signDisplay: "always", 161 maximumFractionDigits: 0, 162 }, 163 values: [ 164 {value: +0.1, string: "+0", parts: [PlusSign("+"), Integer("0")]}, 165 {value: -0.1, string: "-0", parts: [MinusSign("-"), Integer("0")]}, 166 ], 167 }, 168 169 // "exceptZero": Show the sign on positive and negative numbers but not zero. 170 { 171 locale: "en", 172 options: { 173 signDisplay: "exceptZero", 174 maximumFractionDigits: 0, 175 }, 176 177 values: [ 178 {value: +0.1, string: "0", parts: [Integer("0")]}, 179 {value: -0.1, string: "0", parts: [Integer("0")]}, 180 ], 181 } 182 ]; 183 184 runNumberFormattingTestcases(testcases); 185 186 if (typeof reportCompare === "function") 187 reportCompare(true, true);