More tests for Unified NumberFormat. (#2454)

This commit is contained in:
Ms2ger 2020-01-08 22:23:01 +01:00 committed by Leo Balter
parent 01007880bc
commit 2fb0eca404
37 changed files with 881 additions and 188 deletions

View File

@ -0,0 +1,29 @@
// Copyright 2019 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-initializenumberformat
description: Checks handling of the unit option with the currency style.
info: |
SetNumberFormatUnitOptions ( intlObj, options )
5. Let currency be ? GetOption(options, "currency", "string", undefined, undefined).
6. If currency is not undefined, then
a. If the result of IsWellFormedCurrencyCode(currency) is false, throw a RangeError exception.
9. Let unit be ? GetOption(options, "unit", "string", undefined, undefined).
10. If unit is not undefined, then
a. If the result of IsWellFormedUnitIdentifier(unit) is false, throw a RangeError exception.
12. If style is "currency", then
a. If currency is undefined, throw a TypeError exception.
13. If style is "unit", then
a. If unit is undefined, throw a TypeError exception.
features: [Intl.NumberFormat-unified]
---*/
assert.throws(RangeError, () => {
new Intl.NumberFormat([], { style: "currency", unit: "test" })
});
assert.throws(RangeError, () => {
new Intl.NumberFormat([], { style: "unit", currency: "test" })
});

View File

@ -13,23 +13,11 @@ assert.throws(TypeError, () => {
}) })
}); });
for (const unit of [undefined, "test", "MILE", "kB"]) { for (const unit of ["test", "MILE", "kB"]) {
assert.throws(unit === undefined ? TypeError : RangeError, () => { for (const style of [undefined, "decimal", "currency", "unit"]) {
new Intl.NumberFormat([], { assert.throws(RangeError, () => {
style: "unit", new Intl.NumberFormat([], { style, unit })
unit, }, `{ style: ${style}, unit: ${unit} }`);
})
});
for (const style of [undefined, "decimal", "currency"]) {
let called = 0;
const nf = new Intl.NumberFormat([], {
style,
get unit() { ++called; return unit; },
currency: "USD",
});
assert.sameValue(nf.resolvedOptions().unit, undefined);
assert.sameValue(called, 1);
} }
} }
@ -37,4 +25,69 @@ const nf = new Intl.NumberFormat([], {
style: "percent", style: "percent",
}); });
assert.sameValue(nf.resolvedOptions().style, "percent"); assert.sameValue(nf.resolvedOptions().style, "percent");
assert.sameValue("unit" in nf.resolvedOptions(), false);
assert.sameValue(nf.resolvedOptions().unit, undefined); assert.sameValue(nf.resolvedOptions().unit, undefined);
function check(unit) {
const nf = new Intl.NumberFormat([], {
style: "unit",
unit,
});
const options = nf.resolvedOptions();
assert.sameValue(options.style, "unit");
assert.sameValue(options.unit, unit);
}
const units = [
"acre",
"bit",
"byte",
"celsius",
"centimeter",
"day",
"degree",
"fahrenheit",
"fluid-ounce",
"foot",
"gallon",
"gigabit",
"gigabyte",
"gram",
"hectare",
"hour",
"inch",
"kilobit",
"kilobyte",
"kilogram",
"kilometer",
"liter",
"megabit",
"megabyte",
"meter",
"mile",
"mile-scandinavian",
"millimeter",
"milliliter",
"millisecond",
"minute",
"month",
"ounce",
"percent",
"petabyte",
"pound",
"second",
"stone",
"terabit",
"terabyte",
"week",
"yard",
"year",
];
for (const simpleUnit of units) {
check(simpleUnit);
for (const simpleUnit2 of units) {
check(simpleUnit + "-per-" + simpleUnit2);
check(simpleUnit2 + "-per-" + simpleUnit);
}
}

View File

@ -30,3 +30,37 @@ for (const [value, expected = value] of values) {
assert.sameValue("unitDisplay" in resolvedOptions, true); assert.sameValue("unitDisplay" in resolvedOptions, true);
assert.sameValue(resolvedOptions.unitDisplay, expected); assert.sameValue(resolvedOptions.unitDisplay, expected);
} }
for (const [value, expected = value] of values) {
const nf = new Intl.NumberFormat([], {
style: "unit",
unitDisplay: value,
unit: "percent",
});
const resolvedOptions = nf.resolvedOptions();
assert.sameValue("unitDisplay" in resolvedOptions, true);
assert.sameValue(resolvedOptions.unitDisplay, expected);
}
for (const [value] of values) {
const nf = new Intl.NumberFormat([], {
style: "percent",
unitDisplay: value,
});
const resolvedOptions = nf.resolvedOptions();
assert.sameValue("unitDisplay" in resolvedOptions, false);
assert.sameValue(resolvedOptions.unitDisplay, undefined);
}
const invalidValues = [
"",
"Short",
"s",
"\u017Fhort",
];
for (const unitDisplay of invalidValues) {
assert.throws(RangeError, () => {
new Intl.NumberFormat([], { unitDisplay });
});
}

View File

@ -11,45 +11,60 @@ features: [Intl.NumberFormat-unified]
const tests = [ const tests = [
[ [
"0.000345", 0.000345,
"345E-6", "345E-6",
"3,45E-4", "3,45E-4",
], ],
[ [
"0.345", 0.345,
"345E-3", "345E-3",
"3,45E-1", "3,45E-1",
], ],
[ [
"3.45", 3.45,
"3,45E0", "3,45E0",
"3,45E0", "3,45E0",
], ],
[ [
"34.5", 34.5,
"34,5E0", "34,5E0",
"3,45E1", "3,45E1",
], ],
[ [
"543", 543,
"543E0", "543E0",
"5,43E2", "5,43E2",
], ],
[ [
"5430", 5430,
"5,43E3", "5,43E3",
"5,43E3", "5,43E3",
], ],
[ [
"543000", 543000,
"543E3", "543E3",
"5,43E5", "5,43E5",
], ],
[ [
"543211.1", 543211.1,
"543,211E3", "543,211E3",
"5,432E5", "5,432E5",
], ],
[
-Infinity,
"-∞",
"-∞",
],
[
Infinity,
"∞",
"∞",
],
[
NaN,
"NaN",
"NaN",
],
]; ];
for (const [number, engineering, scientific] of tests) { for (const [number, engineering, scientific] of tests) {

View File

@ -11,45 +11,60 @@ features: [Intl.NumberFormat-unified]
const tests = [ const tests = [
[ [
"0.000345", 0.000345,
"345E-6", "345E-6",
"3.45E-4", "3.45E-4",
], ],
[ [
"0.345", 0.345,
"345E-3", "345E-3",
"3.45E-1", "3.45E-1",
], ],
[ [
"3.45", 3.45,
"3.45E0", "3.45E0",
"3.45E0", "3.45E0",
], ],
[ [
"34.5", 34.5,
"34.5E0", "34.5E0",
"3.45E1", "3.45E1",
], ],
[ [
"543", 543,
"543E0", "543E0",
"5.43E2", "5.43E2",
], ],
[ [
"5430", 5430,
"5.43E3", "5.43E3",
"5.43E3", "5.43E3",
], ],
[ [
"543000", 543000,
"543E3", "543E3",
"5.43E5", "5.43E5",
], ],
[ [
"543211.1", 543211.1,
"543.211E3", "543.211E3",
"5.432E5", "5.432E5",
], ],
[
-Infinity,
"-∞",
"-∞",
],
[
Infinity,
"∞",
"∞",
],
[
NaN,
"NaN",
"NaN",
],
]; ];
for (const [number, engineering, scientific] of tests) { for (const [number, engineering, scientific] of tests) {

View File

@ -11,45 +11,60 @@ features: [Intl.NumberFormat-unified]
const tests = [ const tests = [
[ [
"0.000345", 0.000345,
"345E-6", "345E-6",
"3.45E-4", "3.45E-4",
], ],
[ [
"0.345", 0.345,
"345E-3", "345E-3",
"3.45E-1", "3.45E-1",
], ],
[ [
"3.45", 3.45,
"3.45E0", "3.45E0",
"3.45E0", "3.45E0",
], ],
[ [
"34.5", 34.5,
"34.5E0", "34.5E0",
"3.45E1", "3.45E1",
], ],
[ [
"543", 543,
"543E0", "543E0",
"5.43E2", "5.43E2",
], ],
[ [
"5430", 5430,
"5.43E3", "5.43E3",
"5.43E3", "5.43E3",
], ],
[ [
"543000", 543000,
"543E3", "543E3",
"5.43E5", "5.43E5",
], ],
[ [
"543211.1", 543211.1,
"543.211E3", "543.211E3",
"5.432E5", "5.432E5",
], ],
[
-Infinity,
"-∞",
"-∞",
],
[
Infinity,
"∞",
"∞",
],
[
NaN,
"NaN",
"NaN",
],
]; ];
for (const [number, engineering, scientific] of tests) { for (const [number, engineering, scientific] of tests) {

View File

@ -11,45 +11,60 @@ features: [Intl.NumberFormat-unified]
const tests = [ const tests = [
[ [
"0.000345", 0.000345,
"345E-6", "345E-6",
"3.45E-4", "3.45E-4",
], ],
[ [
"0.345", 0.345,
"345E-3", "345E-3",
"3.45E-1", "3.45E-1",
], ],
[ [
"3.45", 3.45,
"3.45E0", "3.45E0",
"3.45E0", "3.45E0",
], ],
[ [
"34.5", 34.5,
"34.5E0", "34.5E0",
"3.45E1", "3.45E1",
], ],
[ [
"543", 543,
"543E0", "543E0",
"5.43E2", "5.43E2",
], ],
[ [
"5430", 5430,
"5.43E3", "5.43E3",
"5.43E3", "5.43E3",
], ],
[ [
"543000", 543000,
"543E3", "543E3",
"5.43E5", "5.43E5",
], ],
[ [
"543211.1", 543211.1,
"543.211E3", "543.211E3",
"5.432E5", "5.432E5",
], ],
[
-Infinity,
"-∞",
"-∞",
],
[
Infinity,
"∞",
"∞",
],
[
NaN,
"NaN",
"NaN",
],
]; ];
for (const [number, engineering, scientific] of tests) { for (const [number, engineering, scientific] of tests) {

View File

@ -11,45 +11,60 @@ features: [Intl.NumberFormat-unified]
const tests = [ const tests = [
[ [
"0.000345", 0.000345,
"345E-6", "345E-6",
"3.45E-4", "3.45E-4",
], ],
[ [
"0.345", 0.345,
"345E-3", "345E-3",
"3.45E-1", "3.45E-1",
], ],
[ [
"3.45", 3.45,
"3.45E0", "3.45E0",
"3.45E0", "3.45E0",
], ],
[ [
"34.5", 34.5,
"34.5E0", "34.5E0",
"3.45E1", "3.45E1",
], ],
[ [
"543", 543,
"543E0", "543E0",
"5.43E2", "5.43E2",
], ],
[ [
"5430", 5430,
"5.43E3", "5.43E3",
"5.43E3", "5.43E3",
], ],
[ [
"543000", 543000,
"543E3", "543E3",
"5.43E5", "5.43E5",
], ],
[ [
"543211.1", 543211.1,
"543.211E3", "543.211E3",
"5.432E5", "5.432E5",
], ],
[
-Infinity,
"-∞",
"-∞",
],
[
Infinity,
"∞",
"∞",
],
[
NaN,
"非數值",
"非數值",
],
]; ];
for (const [number, engineering, scientific] of tests) { for (const [number, engineering, scientific] of tests) {

View File

@ -22,6 +22,9 @@ assert.sameValue(nfShort.format(1.59), "1,6");
assert.sameValue(nfShort.format(0.159), "0,16"); assert.sameValue(nfShort.format(0.159), "0,16");
assert.sameValue(nfShort.format(0.0159), "0,016"); assert.sameValue(nfShort.format(0.0159), "0,016");
assert.sameValue(nfShort.format(0.00159), "0,0016"); assert.sameValue(nfShort.format(0.00159), "0,0016");
assert.sameValue(nfShort.format(-Infinity), "-∞");
assert.sameValue(nfShort.format(Infinity), "∞");
assert.sameValue(nfShort.format(NaN), "NaN");
const nfLong = new Intl.NumberFormat("de-DE", { const nfLong = new Intl.NumberFormat("de-DE", {
notation: "compact", notation: "compact",
@ -37,4 +40,6 @@ assert.sameValue(nfLong.format(1.59), "1,6");
assert.sameValue(nfLong.format(0.159), "0,16"); assert.sameValue(nfLong.format(0.159), "0,16");
assert.sameValue(nfLong.format(0.0159), "0,016"); assert.sameValue(nfLong.format(0.0159), "0,016");
assert.sameValue(nfLong.format(0.00159), "0,0016"); assert.sameValue(nfLong.format(0.00159), "0,0016");
assert.sameValue(nfLong.format(-Infinity), "-∞");
assert.sameValue(nfLong.format(Infinity), "∞");
assert.sameValue(nfLong.format(NaN), "NaN");

View File

@ -22,6 +22,9 @@ assert.sameValue(nfShort.format(1.59), "1.6");
assert.sameValue(nfShort.format(0.159), "0.16"); assert.sameValue(nfShort.format(0.159), "0.16");
assert.sameValue(nfShort.format(0.0159), "0.016"); assert.sameValue(nfShort.format(0.0159), "0.016");
assert.sameValue(nfShort.format(0.00159), "0.0016"); assert.sameValue(nfShort.format(0.00159), "0.0016");
assert.sameValue(nfShort.format(-Infinity), "-∞");
assert.sameValue(nfShort.format(Infinity), "∞");
assert.sameValue(nfShort.format(NaN), "NaN");
const nfLong = new Intl.NumberFormat("en-US", { const nfLong = new Intl.NumberFormat("en-US", {
notation: "compact", notation: "compact",
@ -37,3 +40,6 @@ assert.sameValue(nfLong.format(1.59), "1.6");
assert.sameValue(nfLong.format(0.159), "0.16"); assert.sameValue(nfLong.format(0.159), "0.16");
assert.sameValue(nfLong.format(0.0159), "0.016"); assert.sameValue(nfLong.format(0.0159), "0.016");
assert.sameValue(nfLong.format(0.00159), "0.0016"); assert.sameValue(nfLong.format(0.00159), "0.0016");
assert.sameValue(nfLong.format(-Infinity), "-∞");
assert.sameValue(nfLong.format(Infinity), "∞");
assert.sameValue(nfLong.format(NaN), "NaN");

View File

@ -22,6 +22,9 @@ assert.sameValue(nfShort.format(1.59), "1.6");
assert.sameValue(nfShort.format(0.159), "0.16"); assert.sameValue(nfShort.format(0.159), "0.16");
assert.sameValue(nfShort.format(0.0159), "0.016"); assert.sameValue(nfShort.format(0.0159), "0.016");
assert.sameValue(nfShort.format(0.00159), "0.0016"); assert.sameValue(nfShort.format(0.00159), "0.0016");
assert.sameValue(nfShort.format(-Infinity), "-∞");
assert.sameValue(nfShort.format(Infinity), "∞");
assert.sameValue(nfShort.format(NaN), "NaN");
const nfLong = new Intl.NumberFormat("ja-JP", { const nfLong = new Intl.NumberFormat("ja-JP", {
notation: "compact", notation: "compact",
@ -37,3 +40,6 @@ assert.sameValue(nfLong.format(1.59), "1.6");
assert.sameValue(nfLong.format(0.159), "0.16"); assert.sameValue(nfLong.format(0.159), "0.16");
assert.sameValue(nfLong.format(0.0159), "0.016"); assert.sameValue(nfLong.format(0.0159), "0.016");
assert.sameValue(nfLong.format(0.00159), "0.0016"); assert.sameValue(nfLong.format(0.00159), "0.0016");
assert.sameValue(nfLong.format(-Infinity), "-∞");
assert.sameValue(nfLong.format(Infinity), "∞");
assert.sameValue(nfLong.format(NaN), "NaN");

View File

@ -22,6 +22,9 @@ assert.sameValue(nfShort.format(1.59), "1.6");
assert.sameValue(nfShort.format(0.159), "0.16"); assert.sameValue(nfShort.format(0.159), "0.16");
assert.sameValue(nfShort.format(0.0159), "0.016"); assert.sameValue(nfShort.format(0.0159), "0.016");
assert.sameValue(nfShort.format(0.00159), "0.0016"); assert.sameValue(nfShort.format(0.00159), "0.0016");
assert.sameValue(nfShort.format(-Infinity), "-∞");
assert.sameValue(nfShort.format(Infinity), "∞");
assert.sameValue(nfShort.format(NaN), "NaN");
const nfLong = new Intl.NumberFormat("ko-KR", { const nfLong = new Intl.NumberFormat("ko-KR", {
notation: "compact", notation: "compact",
@ -37,3 +40,6 @@ assert.sameValue(nfLong.format(1.59), "1.6");
assert.sameValue(nfLong.format(0.159), "0.16"); assert.sameValue(nfLong.format(0.159), "0.16");
assert.sameValue(nfLong.format(0.0159), "0.016"); assert.sameValue(nfLong.format(0.0159), "0.016");
assert.sameValue(nfLong.format(0.00159), "0.0016"); assert.sameValue(nfLong.format(0.00159), "0.0016");
assert.sameValue(nfLong.format(-Infinity), "-∞");
assert.sameValue(nfLong.format(Infinity), "∞");
assert.sameValue(nfLong.format(NaN), "NaN");

View File

@ -22,6 +22,9 @@ assert.sameValue(nfShort.format(1.59), "1.6");
assert.sameValue(nfShort.format(0.159), "0.16"); assert.sameValue(nfShort.format(0.159), "0.16");
assert.sameValue(nfShort.format(0.0159), "0.016"); assert.sameValue(nfShort.format(0.0159), "0.016");
assert.sameValue(nfShort.format(0.00159), "0.0016"); assert.sameValue(nfShort.format(0.00159), "0.0016");
assert.sameValue(nfShort.format(-Infinity), "-∞");
assert.sameValue(nfShort.format(Infinity), "∞");
assert.sameValue(nfShort.format(NaN), "非數值");
const nfLong = new Intl.NumberFormat("zh-TW", { const nfLong = new Intl.NumberFormat("zh-TW", {
notation: "compact", notation: "compact",
@ -37,3 +40,6 @@ assert.sameValue(nfLong.format(1.59), "1.6");
assert.sameValue(nfLong.format(0.159), "0.16"); assert.sameValue(nfLong.format(0.159), "0.16");
assert.sameValue(nfLong.format(0.0159), "0.016"); assert.sameValue(nfLong.format(0.0159), "0.016");
assert.sameValue(nfLong.format(0.00159), "0.0016"); assert.sameValue(nfLong.format(0.00159), "0.0016");
assert.sameValue(nfLong.format(-Infinity), "-∞");
assert.sameValue(nfLong.format(Infinity), "∞");
assert.sameValue(nfLong.format(NaN), "非數值");

View File

@ -3,7 +3,7 @@
/*--- /*---
esid: sec-intl.numberformat.prototype.format esid: sec-intl.numberformat.prototype.format
description: Checks handling of the compactDisplay option to the NumberFormat constructor. description: Checks handling of the signDisplay option to the NumberFormat constructor.
locale: [de-DE] locale: [de-DE]
features: [Intl.NumberFormat-unified] features: [Intl.NumberFormat-unified]
---*/ ---*/
@ -12,49 +12,64 @@ features: [Intl.NumberFormat-unified]
const tests = [ const tests = [
[ [
"auto", "auto",
"-∞",
"-987", "-987",
"-0", "-0",
"-0", "-0",
"0", "0",
"0", "0",
"987", "987",
"∞",
"NaN",
], ],
[ [
"always", "always",
"-∞",
"-987", "-987",
"-0", "-0",
"-0", "-0",
"+0", "+0",
"+0", "+0",
"+987", "+987",
"+∞",
"+NaN",
], ],
[ [
"never", "never",
"∞",
"987", "987",
"0", "0",
"0", "0",
"0", "0",
"0", "0",
"987", "987",
"∞",
"NaN",
], ],
[ [
"exceptZero", "exceptZero",
"-∞",
"-987", "-987",
"-0", "-0",
"-0", "-0",
"0", "0",
"+0", "0",
"+987", "+987",
"+∞",
"NaN",
], ],
]; ];
for (const [signDisplay, negative, negativeNearZero, negativeZero, zero, positiveNearZero, positive] of tests) { for (const [signDisplay, ...expected] of tests) {
const nf = new Intl.NumberFormat("de-DE", {signDisplay}); const nf = new Intl.NumberFormat("de-DE", {signDisplay});
assert.sameValue(nf.format(-987), negative); assert.sameValue(nf.format(-Infinity), expected[0], `-Infinity (${signDisplay})`);
assert.sameValue(nf.format(-0.0001), negativeNearZero); assert.sameValue(nf.format(-987), expected[1], `-987 (${signDisplay})`);
assert.sameValue(nf.format(-0), negativeZero); assert.sameValue(nf.format(-0.0001), expected[2], `-0.0001 (${signDisplay})`);
assert.sameValue(nf.format(0), zero); assert.sameValue(nf.format(-0), expected[3], `-0 (${signDisplay})`);
assert.sameValue(nf.format(0.0001), positiveNearZero); assert.sameValue(nf.format(0), expected[4], `0 (${signDisplay})`);
assert.sameValue(nf.format(987), positive); assert.sameValue(nf.format(0.0001), expected[5], `0.0001 (${signDisplay})`);
assert.sameValue(nf.format(987), expected[6], `987 (${signDisplay})`);
assert.sameValue(nf.format(Infinity), expected[7], `Infinity (${signDisplay})`);
assert.sameValue(nf.format(NaN), expected[8], `NaN (${signDisplay})`);
} }

View File

@ -3,7 +3,7 @@
/*--- /*---
esid: sec-intl.numberformat.prototype.format esid: sec-intl.numberformat.prototype.format
description: Checks handling of the compactDisplay option to the NumberFormat constructor. description: Checks handling of the signDisplay option to the NumberFormat constructor.
locale: [en-US] locale: [en-US]
features: [Intl.NumberFormat-unified] features: [Intl.NumberFormat-unified]
---*/ ---*/
@ -12,49 +12,64 @@ features: [Intl.NumberFormat-unified]
const tests = [ const tests = [
[ [
"auto", "auto",
"-∞",
"-987", "-987",
"-0", "-0",
"-0", "-0",
"0", "0",
"0", "0",
"987", "987",
"∞",
"NaN",
], ],
[ [
"always", "always",
"-∞",
"-987", "-987",
"-0", "-0",
"-0", "-0",
"+0", "+0",
"+0", "+0",
"+987", "+987",
"+∞",
"+NaN",
], ],
[ [
"never", "never",
"∞",
"987", "987",
"0", "0",
"0", "0",
"0", "0",
"0", "0",
"987", "987",
"∞",
"NaN",
], ],
[ [
"exceptZero", "exceptZero",
"-∞",
"-987", "-987",
"-0", "-0",
"-0", "-0",
"0", "0",
"+0", "0",
"+987", "+987",
"+∞",
"NaN",
], ],
]; ];
for (const [signDisplay, negative, negativeNearZero, negativeZero, zero, positiveNearZero, positive] of tests) { for (const [signDisplay, ...expected] of tests) {
const nf = new Intl.NumberFormat("en-US", {signDisplay}); const nf = new Intl.NumberFormat("en-US", {signDisplay});
assert.sameValue(nf.format(-987), negative); assert.sameValue(nf.format(-Infinity), expected[0], `-Infinity (${signDisplay})`);
assert.sameValue(nf.format(-0.0001), negativeNearZero); assert.sameValue(nf.format(-987), expected[1], `-987 (${signDisplay})`);
assert.sameValue(nf.format(-0), negativeZero); assert.sameValue(nf.format(-0.0001), expected[2], `-0.0001 (${signDisplay})`);
assert.sameValue(nf.format(0), zero); assert.sameValue(nf.format(-0), expected[3], `-0 (${signDisplay})`);
assert.sameValue(nf.format(0.0001), positiveNearZero); assert.sameValue(nf.format(0), expected[4], `0 (${signDisplay})`);
assert.sameValue(nf.format(987), positive); assert.sameValue(nf.format(0.0001), expected[5], `0.0001 (${signDisplay})`);
assert.sameValue(nf.format(987), expected[6], `987 (${signDisplay})`);
assert.sameValue(nf.format(Infinity), expected[7], `Infinity (${signDisplay})`);
assert.sameValue(nf.format(NaN), expected[8], `NaN (${signDisplay})`);
} }

View File

@ -3,7 +3,7 @@
/*--- /*---
esid: sec-intl.numberformat.prototype.format esid: sec-intl.numberformat.prototype.format
description: Checks handling of the compactDisplay option to the NumberFormat constructor. description: Checks handling of the signDisplay option to the NumberFormat constructor.
locale: [ja-JP] locale: [ja-JP]
features: [Intl.NumberFormat-unified] features: [Intl.NumberFormat-unified]
---*/ ---*/
@ -12,49 +12,64 @@ features: [Intl.NumberFormat-unified]
const tests = [ const tests = [
[ [
"auto", "auto",
"-∞",
"-987", "-987",
"-0", "-0",
"-0", "-0",
"0", "0",
"0", "0",
"987", "987",
"∞",
"NaN",
], ],
[ [
"always", "always",
"-∞",
"-987", "-987",
"-0", "-0",
"-0", "-0",
"+0", "+0",
"+0", "+0",
"+987", "+987",
"+∞",
"+NaN",
], ],
[ [
"never", "never",
"∞",
"987", "987",
"0", "0",
"0", "0",
"0", "0",
"0", "0",
"987", "987",
"∞",
"NaN",
], ],
[ [
"exceptZero", "exceptZero",
"-∞",
"-987", "-987",
"-0", "-0",
"-0", "-0",
"0", "0",
"+0", "0",
"+987", "+987",
"+∞",
"NaN",
], ],
]; ];
for (const [signDisplay, negative, negativeNearZero, negativeZero, zero, positiveNearZero, positive] of tests) { for (const [signDisplay, ...expected] of tests) {
const nf = new Intl.NumberFormat("ja-JP", {signDisplay}); const nf = new Intl.NumberFormat("ja-JP", {signDisplay});
assert.sameValue(nf.format(-987), negative); assert.sameValue(nf.format(-Infinity), expected[0], `-Infinity (${signDisplay})`);
assert.sameValue(nf.format(-0.0001), negativeNearZero); assert.sameValue(nf.format(-987), expected[1], `-987 (${signDisplay})`);
assert.sameValue(nf.format(-0), negativeZero); assert.sameValue(nf.format(-0.0001), expected[2], `-0.0001 (${signDisplay})`);
assert.sameValue(nf.format(0), zero); assert.sameValue(nf.format(-0), expected[3], `-0 (${signDisplay})`);
assert.sameValue(nf.format(0.0001), positiveNearZero); assert.sameValue(nf.format(0), expected[4], `0 (${signDisplay})`);
assert.sameValue(nf.format(987), positive); assert.sameValue(nf.format(0.0001), expected[5], `0.0001 (${signDisplay})`);
assert.sameValue(nf.format(987), expected[6], `987 (${signDisplay})`);
assert.sameValue(nf.format(Infinity), expected[7], `Infinity (${signDisplay})`);
assert.sameValue(nf.format(NaN), expected[8], `NaN (${signDisplay})`);
} }

View File

@ -3,7 +3,7 @@
/*--- /*---
esid: sec-intl.numberformat.prototype.format esid: sec-intl.numberformat.prototype.format
description: Checks handling of the compactDisplay option to the NumberFormat constructor. description: Checks handling of the signDisplay option to the NumberFormat constructor.
locale: [ko-KR] locale: [ko-KR]
features: [Intl.NumberFormat-unified] features: [Intl.NumberFormat-unified]
---*/ ---*/
@ -12,49 +12,64 @@ features: [Intl.NumberFormat-unified]
const tests = [ const tests = [
[ [
"auto", "auto",
"-∞",
"-987", "-987",
"-0", "-0",
"-0", "-0",
"0", "0",
"0", "0",
"987", "987",
"∞",
"NaN",
], ],
[ [
"always", "always",
"-∞",
"-987", "-987",
"-0", "-0",
"-0", "-0",
"+0", "+0",
"+0", "+0",
"+987", "+987",
"+∞",
"+NaN",
], ],
[ [
"never", "never",
"∞",
"987", "987",
"0", "0",
"0", "0",
"0", "0",
"0", "0",
"987", "987",
"∞",
"NaN",
], ],
[ [
"exceptZero", "exceptZero",
"-∞",
"-987", "-987",
"-0", "-0",
"-0", "-0",
"0", "0",
"+0", "0",
"+987", "+987",
"+∞",
"NaN",
], ],
]; ];
for (const [signDisplay, negative, negativeNearZero, negativeZero, zero, positiveNearZero, positive] of tests) { for (const [signDisplay, ...expected] of tests) {
const nf = new Intl.NumberFormat("ko-KR", {signDisplay}); const nf = new Intl.NumberFormat("ko-KR", {signDisplay});
assert.sameValue(nf.format(-987), negative); assert.sameValue(nf.format(-Infinity), expected[0], `-Infinity (${signDisplay})`);
assert.sameValue(nf.format(-0.0001), negativeNearZero); assert.sameValue(nf.format(-987), expected[1], `-987 (${signDisplay})`);
assert.sameValue(nf.format(-0), negativeZero); assert.sameValue(nf.format(-0.0001), expected[2], `-0.0001 (${signDisplay})`);
assert.sameValue(nf.format(0), zero); assert.sameValue(nf.format(-0), expected[3], `-0 (${signDisplay})`);
assert.sameValue(nf.format(0.0001), positiveNearZero); assert.sameValue(nf.format(0), expected[4], `0 (${signDisplay})`);
assert.sameValue(nf.format(987), positive); assert.sameValue(nf.format(0.0001), expected[5], `0.0001 (${signDisplay})`);
assert.sameValue(nf.format(987), expected[6], `987 (${signDisplay})`);
assert.sameValue(nf.format(Infinity), expected[7], `Infinity (${signDisplay})`);
assert.sameValue(nf.format(NaN), expected[8], `NaN (${signDisplay})`);
} }

View File

@ -0,0 +1,18 @@
// Copyright 2019 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-intl.numberformat.prototype.format
description: Checks handling of the signDisplay option to the NumberFormat constructor.
locale: [en-US]
features: [Intl.NumberFormat-unified]
---*/
const fmt = new Intl.NumberFormat("en-US", {
maximumFractionDigits: 1,
signDisplay: "exceptZero"
});
assert.sameValue(fmt.format(0.01), "0");
assert.sameValue(fmt.format(-0.01), "0");

View File

@ -3,7 +3,7 @@
/*--- /*---
esid: sec-intl.numberformat.prototype.format esid: sec-intl.numberformat.prototype.format
description: Checks handling of the compactDisplay option to the NumberFormat constructor. description: Checks handling of the signDisplay option to the NumberFormat constructor.
locale: [zh-TW] locale: [zh-TW]
features: [Intl.NumberFormat-unified] features: [Intl.NumberFormat-unified]
---*/ ---*/
@ -12,49 +12,64 @@ features: [Intl.NumberFormat-unified]
const tests = [ const tests = [
[ [
"auto", "auto",
"-∞",
"-987", "-987",
"-0", "-0",
"-0", "-0",
"0", "0",
"0", "0",
"987", "987",
"∞",
"非數值",
], ],
[ [
"always", "always",
"-∞",
"-987", "-987",
"-0", "-0",
"-0", "-0",
"+0", "+0",
"+0", "+0",
"+987", "+987",
"+∞",
"+非數值",
], ],
[ [
"never", "never",
"∞",
"987", "987",
"0", "0",
"0", "0",
"0", "0",
"0", "0",
"987", "987",
"∞",
"非數值",
], ],
[ [
"exceptZero", "exceptZero",
"-∞",
"-987", "-987",
"-0", "-0",
"-0", "-0",
"0", "0",
"+0", "0",
"+987", "+987",
"+∞",
"非數值",
], ],
]; ];
for (const [signDisplay, negative, negativeNearZero, negativeZero, zero, positiveNearZero, positive] of tests) { for (const [signDisplay, ...expected] of tests) {
const nf = new Intl.NumberFormat("zh-TW", {signDisplay}); const nf = new Intl.NumberFormat("zh-TW", {signDisplay});
assert.sameValue(nf.format(-987), negative); assert.sameValue(nf.format(-Infinity), expected[0], `-Infinity (${signDisplay})`);
assert.sameValue(nf.format(-0.0001), negativeNearZero); assert.sameValue(nf.format(-987), expected[1], `-987 (${signDisplay})`);
assert.sameValue(nf.format(-0), negativeZero); assert.sameValue(nf.format(-0.0001), expected[2], `-0.0001 (${signDisplay})`);
assert.sameValue(nf.format(0), zero); assert.sameValue(nf.format(-0), expected[3], `-0 (${signDisplay})`);
assert.sameValue(nf.format(0.0001), positiveNearZero); assert.sameValue(nf.format(0), expected[4], `0 (${signDisplay})`);
assert.sameValue(nf.format(987), positive); assert.sameValue(nf.format(0.0001), expected[5], `0.0001 (${signDisplay})`);
assert.sameValue(nf.format(987), expected[6], `987 (${signDisplay})`);
assert.sameValue(nf.format(Infinity), expected[7], `Infinity (${signDisplay})`);
assert.sameValue(nf.format(NaN), expected[8], `NaN (${signDisplay})`);
} }

View File

@ -0,0 +1,110 @@
// Copyright 2019 Igalia, S.L., Google, Inc. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-intl.numberformat.prototype.format
description: Checks handling of units.
features: [Intl.NumberFormat-unified]
---*/
const units = [
"acre-foot",
"ampere",
"arc-minute",
"arc-second",
"astronomical-unit",
"atmosphere",
"bushel",
"calorie",
"carat",
"centiliter",
"century",
"cubic-centimeter",
"cubic-foot",
"cubic-inch",
"cubic-kilometer",
"cubic-meter",
"cubic-mile",
"cubic-yard",
"cup-metric",
"cup",
"day-person",
"deciliter",
"decimeter",
"fathom",
"foodcalorie",
"furlong",
"g-force",
"gallon-imperial",
"generic",
"gigahertz",
"gigawatt",
"hectoliter",
"hectopascal",
"hertz",
"horsepower",
"inch-hg",
"joule",
"karat",
"kelvin",
"kilocalorie",
"kilohertz",
"kilojoule",
"kilowatt-hour",
"kilowatt",
"knot",
"light-year",
"lux",
"megahertz",
"megaliter",
"megawatt",
"metric-ton",
"microgram",
"micrometer",
"microsecond",
"milliampere",
"millibar",
"milligram",
"millimeter-of-mercury",
"milliwatt",
"month-person",
"nanometer",
"nanosecond",
"nautical-mile",
"ohm",
"ounce-troy",
"parsec",
"permille",
"picometer",
"pint-metric",
"pint",
"point",
"quart",
"radian",
"revolution",
"square-centimeter",
"square-foot",
"square-inch",
"square-kilometer",
"square-meter",
"square-mile",
"square-yard",
"tablespoon",
"teaspoon",
"ton",
"volt",
"watt",
"week-person",
"year-person",
"liter-per-100kilometers",
"meter-per-second-squared",
"mile-per-gallon-imperial",
"milligram-per-deciliter",
"millimole-per-liter",
"part-per-million",
"pound-per-square-inch",
];
for (const unit of units) {
assert.throws(RangeError, () => new Intl.NumberFormat(undefined, { style: "unit", unit }), `Throw for ${unit}`);
}

View File

@ -21,45 +21,60 @@ function verifyFormatParts(actual, expected, message) {
const tests = [ const tests = [
[ [
"0.000345", 0.000345,
[{"type":"integer","value":"345"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"6"}], [{"type":"integer","value":"345"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"6"}],
[{"type":"integer","value":"3"},{"type":"decimal","value":","},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"4"}], [{"type":"integer","value":"3"},{"type":"decimal","value":","},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"4"}],
], ],
[ [
"0.345", 0.345,
[{"type":"integer","value":"345"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"3"}], [{"type":"integer","value":"345"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"3"}],
[{"type":"integer","value":"3"},{"type":"decimal","value":","},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"1"}], [{"type":"integer","value":"3"},{"type":"decimal","value":","},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"1"}],
], ],
[ [
"3.45", 3.45,
[{"type":"integer","value":"3"},{"type":"decimal","value":","},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}], [{"type":"integer","value":"3"},{"type":"decimal","value":","},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}],
[{"type":"integer","value":"3"},{"type":"decimal","value":","},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}], [{"type":"integer","value":"3"},{"type":"decimal","value":","},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}],
], ],
[ [
"34.5", 34.5,
[{"type":"integer","value":"34"},{"type":"decimal","value":","},{"type":"fraction","value":"5"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}], [{"type":"integer","value":"34"},{"type":"decimal","value":","},{"type":"fraction","value":"5"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}],
[{"type":"integer","value":"3"},{"type":"decimal","value":","},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"1"}], [{"type":"integer","value":"3"},{"type":"decimal","value":","},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"1"}],
], ],
[ [
"543", 543,
[{"type":"integer","value":"543"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}], [{"type":"integer","value":"543"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}],
[{"type":"integer","value":"5"},{"type":"decimal","value":","},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"2"}], [{"type":"integer","value":"5"},{"type":"decimal","value":","},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"2"}],
], ],
[ [
"5430", 5430,
[{"type":"integer","value":"5"},{"type":"decimal","value":","},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}], [{"type":"integer","value":"5"},{"type":"decimal","value":","},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}],
[{"type":"integer","value":"5"},{"type":"decimal","value":","},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}], [{"type":"integer","value":"5"},{"type":"decimal","value":","},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}],
], ],
[ [
"543000", 543000,
[{"type":"integer","value":"543"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}], [{"type":"integer","value":"543"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}],
[{"type":"integer","value":"5"},{"type":"decimal","value":","},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"5"}], [{"type":"integer","value":"5"},{"type":"decimal","value":","},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"5"}],
], ],
[ [
"543211.1", 543211.1,
[{"type":"integer","value":"543"},{"type":"decimal","value":","},{"type":"fraction","value":"211"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}], [{"type":"integer","value":"543"},{"type":"decimal","value":","},{"type":"fraction","value":"211"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}],
[{"type":"integer","value":"5"},{"type":"decimal","value":","},{"type":"fraction","value":"432"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"5"}], [{"type":"integer","value":"5"},{"type":"decimal","value":","},{"type":"fraction","value":"432"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"5"}],
], ],
[
-Infinity,
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
],
[
Infinity,
[{"type":"infinity","value":"∞"}],
[{"type":"infinity","value":"∞"}],
],
[
NaN,
[{"type":"nan","value":"NaN"}],
[{"type":"nan","value":"NaN"}],
],
]; ];
for (const [number, engineering, scientific] of tests) { for (const [number, engineering, scientific] of tests) {

View File

@ -21,45 +21,60 @@ function verifyFormatParts(actual, expected, message) {
const tests = [ const tests = [
[ [
"0.000345", 0.000345,
[{"type":"integer","value":"345"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"6"}], [{"type":"integer","value":"345"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"6"}],
[{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"4"}], [{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"4"}],
], ],
[ [
"0.345", 0.345,
[{"type":"integer","value":"345"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"3"}], [{"type":"integer","value":"345"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"3"}],
[{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"1"}], [{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"1"}],
], ],
[ [
"3.45", 3.45,
[{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}], [{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}],
[{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}], [{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}],
], ],
[ [
"34.5", 34.5,
[{"type":"integer","value":"34"},{"type":"decimal","value":"."},{"type":"fraction","value":"5"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}], [{"type":"integer","value":"34"},{"type":"decimal","value":"."},{"type":"fraction","value":"5"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}],
[{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"1"}], [{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"1"}],
], ],
[ [
"543", 543,
[{"type":"integer","value":"543"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}], [{"type":"integer","value":"543"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}],
[{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"2"}], [{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"2"}],
], ],
[ [
"5430", 5430,
[{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}], [{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}],
[{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}], [{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}],
], ],
[ [
"543000", 543000,
[{"type":"integer","value":"543"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}], [{"type":"integer","value":"543"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}],
[{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"5"}], [{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"5"}],
], ],
[ [
"543211.1", 543211.1,
[{"type":"integer","value":"543"},{"type":"decimal","value":"."},{"type":"fraction","value":"211"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}], [{"type":"integer","value":"543"},{"type":"decimal","value":"."},{"type":"fraction","value":"211"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}],
[{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"432"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"5"}], [{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"432"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"5"}],
], ],
[
-Infinity,
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
],
[
Infinity,
[{"type":"infinity","value":"∞"}],
[{"type":"infinity","value":"∞"}],
],
[
NaN,
[{"type":"nan","value":"NaN"}],
[{"type":"nan","value":"NaN"}],
],
]; ];
for (const [number, engineering, scientific] of tests) { for (const [number, engineering, scientific] of tests) {

View File

@ -21,45 +21,60 @@ function verifyFormatParts(actual, expected, message) {
const tests = [ const tests = [
[ [
"0.000345", 0.000345,
[{"type":"integer","value":"345"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"6"}], [{"type":"integer","value":"345"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"6"}],
[{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"4"}], [{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"4"}],
], ],
[ [
"0.345", 0.345,
[{"type":"integer","value":"345"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"3"}], [{"type":"integer","value":"345"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"3"}],
[{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"1"}], [{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"1"}],
], ],
[ [
"3.45", 3.45,
[{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}], [{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}],
[{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}], [{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}],
], ],
[ [
"34.5", 34.5,
[{"type":"integer","value":"34"},{"type":"decimal","value":"."},{"type":"fraction","value":"5"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}], [{"type":"integer","value":"34"},{"type":"decimal","value":"."},{"type":"fraction","value":"5"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}],
[{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"1"}], [{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"1"}],
], ],
[ [
"543", 543,
[{"type":"integer","value":"543"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}], [{"type":"integer","value":"543"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}],
[{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"2"}], [{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"2"}],
], ],
[ [
"5430", 5430,
[{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}], [{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}],
[{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}], [{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}],
], ],
[ [
"543000", 543000,
[{"type":"integer","value":"543"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}], [{"type":"integer","value":"543"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}],
[{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"5"}], [{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"5"}],
], ],
[ [
"543211.1", 543211.1,
[{"type":"integer","value":"543"},{"type":"decimal","value":"."},{"type":"fraction","value":"211"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}], [{"type":"integer","value":"543"},{"type":"decimal","value":"."},{"type":"fraction","value":"211"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}],
[{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"432"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"5"}], [{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"432"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"5"}],
], ],
[
-Infinity,
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
],
[
Infinity,
[{"type":"infinity","value":"∞"}],
[{"type":"infinity","value":"∞"}],
],
[
NaN,
[{"type":"nan","value":"NaN"}],
[{"type":"nan","value":"NaN"}],
],
]; ];
for (const [number, engineering, scientific] of tests) { for (const [number, engineering, scientific] of tests) {

View File

@ -21,45 +21,60 @@ function verifyFormatParts(actual, expected, message) {
const tests = [ const tests = [
[ [
"0.000345", 0.000345,
[{"type":"integer","value":"345"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"6"}], [{"type":"integer","value":"345"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"6"}],
[{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"4"}], [{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"4"}],
], ],
[ [
"0.345", 0.345,
[{"type":"integer","value":"345"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"3"}], [{"type":"integer","value":"345"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"3"}],
[{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"1"}], [{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"1"}],
], ],
[ [
"3.45", 3.45,
[{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}], [{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}],
[{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}], [{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}],
], ],
[ [
"34.5", 34.5,
[{"type":"integer","value":"34"},{"type":"decimal","value":"."},{"type":"fraction","value":"5"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}], [{"type":"integer","value":"34"},{"type":"decimal","value":"."},{"type":"fraction","value":"5"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}],
[{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"1"}], [{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"1"}],
], ],
[ [
"543", 543,
[{"type":"integer","value":"543"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}], [{"type":"integer","value":"543"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}],
[{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"2"}], [{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"2"}],
], ],
[ [
"5430", 5430,
[{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}], [{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}],
[{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}], [{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}],
], ],
[ [
"543000", 543000,
[{"type":"integer","value":"543"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}], [{"type":"integer","value":"543"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}],
[{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"5"}], [{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"5"}],
], ],
[ [
"543211.1", 543211.1,
[{"type":"integer","value":"543"},{"type":"decimal","value":"."},{"type":"fraction","value":"211"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}], [{"type":"integer","value":"543"},{"type":"decimal","value":"."},{"type":"fraction","value":"211"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}],
[{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"432"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"5"}], [{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"432"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"5"}],
], ],
[
-Infinity,
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
],
[
Infinity,
[{"type":"infinity","value":"∞"}],
[{"type":"infinity","value":"∞"}],
],
[
NaN,
[{"type":"nan","value":"NaN"}],
[{"type":"nan","value":"NaN"}],
],
]; ];
for (const [number, engineering, scientific] of tests) { for (const [number, engineering, scientific] of tests) {

View File

@ -21,45 +21,60 @@ function verifyFormatParts(actual, expected, message) {
const tests = [ const tests = [
[ [
"0.000345", 0.000345,
[{"type":"integer","value":"345"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"6"}], [{"type":"integer","value":"345"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"6"}],
[{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"4"}], [{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"4"}],
], ],
[ [
"0.345", 0.345,
[{"type":"integer","value":"345"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"3"}], [{"type":"integer","value":"345"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"3"}],
[{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"1"}], [{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentMinusSign","value":"-"},{"type":"exponentInteger","value":"1"}],
], ],
[ [
"3.45", 3.45,
[{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}], [{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}],
[{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}], [{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}],
], ],
[ [
"34.5", 34.5,
[{"type":"integer","value":"34"},{"type":"decimal","value":"."},{"type":"fraction","value":"5"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}], [{"type":"integer","value":"34"},{"type":"decimal","value":"."},{"type":"fraction","value":"5"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}],
[{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"1"}], [{"type":"integer","value":"3"},{"type":"decimal","value":"."},{"type":"fraction","value":"45"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"1"}],
], ],
[ [
"543", 543,
[{"type":"integer","value":"543"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}], [{"type":"integer","value":"543"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"0"}],
[{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"2"}], [{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"2"}],
], ],
[ [
"5430", 5430,
[{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}], [{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}],
[{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}], [{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}],
], ],
[ [
"543000", 543000,
[{"type":"integer","value":"543"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}], [{"type":"integer","value":"543"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}],
[{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"5"}], [{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"43"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"5"}],
], ],
[ [
"543211.1", 543211.1,
[{"type":"integer","value":"543"},{"type":"decimal","value":"."},{"type":"fraction","value":"211"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}], [{"type":"integer","value":"543"},{"type":"decimal","value":"."},{"type":"fraction","value":"211"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"3"}],
[{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"432"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"5"}], [{"type":"integer","value":"5"},{"type":"decimal","value":"."},{"type":"fraction","value":"432"},{"type":"exponentSeparator","value":"E"},{"type":"exponentInteger","value":"5"}],
], ],
[
-Infinity,
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
],
[
Infinity,
[{"type":"infinity","value":"∞"}],
[{"type":"infinity","value":"∞"}],
],
[
NaN,
[{"type":"nan","value":"非數值"}],
[{"type":"nan","value":"非數值"}],
],
]; ];
for (const [number, engineering, scientific] of tests) { for (const [number, engineering, scientific] of tests) {

View File

@ -63,6 +63,18 @@ const tests = [
0.00159, 0.00159,
[{"type":"integer","value":"0"},{"type":"decimal","value":","},{"type":"fraction","value":"0016"}], [{"type":"integer","value":"0"},{"type":"decimal","value":","},{"type":"fraction","value":"0016"}],
], ],
[
-Infinity,
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
],
[
Infinity,
[{"type":"infinity","value":"∞"}],
],
[
NaN,
[{"type":"nan","value":"NaN"}],
],
]; ];
for (const [number, short, long = short] of tests) { for (const [number, short, long = short] of tests) {

View File

@ -63,6 +63,18 @@ const tests = [
0.00159, 0.00159,
[{"type":"integer","value":"0"},{"type":"decimal","value":"."},{"type":"fraction","value":"0016"}], [{"type":"integer","value":"0"},{"type":"decimal","value":"."},{"type":"fraction","value":"0016"}],
], ],
[
-Infinity,
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
],
[
Infinity,
[{"type":"infinity","value":"∞"}],
],
[
NaN,
[{"type":"nan","value":"NaN"}],
],
]; ];
for (const [number, short, long = short] of tests) { for (const [number, short, long = short] of tests) {

View File

@ -59,6 +59,18 @@ const tests = [
0.00159, 0.00159,
[{"type":"integer","value":"0"},{"type":"decimal","value":"."},{"type":"fraction","value":"0016"}], [{"type":"integer","value":"0"},{"type":"decimal","value":"."},{"type":"fraction","value":"0016"}],
], ],
[
-Infinity,
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
],
[
Infinity,
[{"type":"infinity","value":"∞"}],
],
[
NaN,
[{"type":"nan","value":"NaN"}],
],
]; ];
for (const [number, short, long = short] of tests) { for (const [number, short, long = short] of tests) {

View File

@ -59,6 +59,18 @@ const tests = [
0.00159, 0.00159,
[{"type":"integer","value":"0"},{"type":"decimal","value":"."},{"type":"fraction","value":"0016"}], [{"type":"integer","value":"0"},{"type":"decimal","value":"."},{"type":"fraction","value":"0016"}],
], ],
[
-Infinity,
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
],
[
Infinity,
[{"type":"infinity","value":"∞"}],
],
[
NaN,
[{"type":"nan","value":"NaN"}],
],
]; ];
for (const [number, short, long = short] of tests) { for (const [number, short, long = short] of tests) {

View File

@ -59,6 +59,18 @@ const tests = [
0.00159, 0.00159,
[{"type":"integer","value":"0"},{"type":"decimal","value":"."},{"type":"fraction","value":"0016"}], [{"type":"integer","value":"0"},{"type":"decimal","value":"."},{"type":"fraction","value":"0016"}],
], ],
[
-Infinity,
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
],
[
Infinity,
[{"type":"infinity","value":"∞"}],
],
[
NaN,
[{"type":"nan","value":"非數值"}],
],
]; ];
for (const [number, short, long = short] of tests) { for (const [number, short, long = short] of tests) {

View File

@ -0,0 +1,36 @@
// Copyright 2019 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-intl.numberformat.prototype.formattoparts
description: Checks handling of the percent style and unit.
locale: [en-US]
features: [Intl.NumberFormat-unified]
---*/
function verifyFormatParts(actual, expected, message) {
assert.sameValue(Array.isArray(expected), true, `${message}: expected is Array`);
assert.sameValue(Array.isArray(actual), true, `${message}: actual is Array`);
assert.sameValue(actual.length, expected.length, `${message}: length`);
for (let i = 0; i < actual.length; ++i) {
assert.sameValue(actual[i].type, expected[i].type, `${message}: parts[${i}].type`);
assert.sameValue(actual[i].value, expected[i].value, `${message}: parts[${i}].value`);
}
}
const nfStyle = new Intl.NumberFormat("en-US", { style: "percent" });
verifyFormatParts(nfStyle.formatToParts(-123), [
{"type":"minusSign","value":"-"},
{"type":"integer","value":"12"},
{"type":"group","value":","},
{"type":"integer","value":"300"},
{"type":"percentSign","value":"%"},
], "style");
const nfUnit = new Intl.NumberFormat("en-US", { style: "unit", unit: "percent" });
verifyFormatParts(nfUnit.formatToParts(-123), [
{"type":"minusSign","value":"-"},
{"type":"integer","value":"123"},
{"type":"unit","value":"%"},
], "unit");

View File

@ -3,7 +3,7 @@
/*--- /*---
esid: sec-intl.numberformat.prototype.formattoparts esid: sec-intl.numberformat.prototype.formattoparts
description: Checks handling of the compactDisplay option to the NumberFormat constructor. description: Checks handling of the signDisplay option to the NumberFormat constructor.
locale: [de-DE] locale: [de-DE]
features: [Intl.NumberFormat-unified] features: [Intl.NumberFormat-unified]
---*/ ---*/
@ -22,49 +22,64 @@ function verifyFormatParts(actual, expected, message) {
const tests = [ const tests = [
[ [
"auto", "auto",
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"integer","value":"987"}], [{"type":"integer","value":"987"}],
[{"type":"infinity","value":"∞"}],
[{"type":"nan","value":"NaN"}],
], ],
[ [
"always", "always",
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"plusSign","value":"+"},{"type":"integer","value":"0"}], [{"type":"plusSign","value":"+"},{"type":"integer","value":"0"}],
[{"type":"plusSign","value":"+"},{"type":"integer","value":"0"}], [{"type":"plusSign","value":"+"},{"type":"integer","value":"0"}],
[{"type":"plusSign","value":"+"},{"type":"integer","value":"987"}], [{"type":"plusSign","value":"+"},{"type":"integer","value":"987"}],
[{"type":"plusSign","value":"+"},{"type":"infinity","value":"∞"}],
[{"type":"plusSign","value":"+"},{"type":"nan","value":"NaN"}],
], ],
[ [
"never", "never",
[{"type":"infinity","value":"∞"}],
[{"type":"integer","value":"987"}], [{"type":"integer","value":"987"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"integer","value":"987"}], [{"type":"integer","value":"987"}],
[{"type":"infinity","value":"∞"}],
[{"type":"nan","value":"NaN"}],
], ],
[ [
"exceptZero", "exceptZero",
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"plusSign","value":"+"},{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"plusSign","value":"+"},{"type":"integer","value":"987"}], [{"type":"plusSign","value":"+"},{"type":"integer","value":"987"}],
[{"type":"plusSign","value":"+"},{"type":"infinity","value":"∞"}],
[{"type":"nan","value":"NaN"}],
], ],
]; ];
for (const [signDisplay, negative, negativeNearZero, negativeZero, zero, positiveNearZero, positive] of tests) { for (const [signDisplay, ...expected] of tests) {
const nf = new Intl.NumberFormat("de-DE", {signDisplay}); const nf = new Intl.NumberFormat("de-DE", {signDisplay});
verifyFormatParts(nf.formatToParts(-987), negative); verifyFormatParts(nf.formatToParts(-Infinity), expected[0], `-Infinity (${signDisplay})`);
verifyFormatParts(nf.formatToParts(-0.0001), negativeNearZero); verifyFormatParts(nf.formatToParts(-987), expected[1], `-987 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(-0), negativeZero); verifyFormatParts(nf.formatToParts(-0.0001), expected[2], `-0.0001 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(0), zero); verifyFormatParts(nf.formatToParts(-0), expected[3], `-0 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(0.0001), positiveNearZero); verifyFormatParts(nf.formatToParts(0), expected[4], `0 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(987), positive); verifyFormatParts(nf.formatToParts(0.0001), expected[5], `0.0001 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(987), expected[6], `987 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(Infinity), expected[7], `Infinity (${signDisplay})`);
verifyFormatParts(nf.formatToParts(NaN), expected[8], `NaN (${signDisplay})`);
} }

View File

@ -3,7 +3,7 @@
/*--- /*---
esid: sec-intl.numberformat.prototype.formattoparts esid: sec-intl.numberformat.prototype.formattoparts
description: Checks handling of the compactDisplay option to the NumberFormat constructor. description: Checks handling of the signDisplay option to the NumberFormat constructor.
locale: [en-US] locale: [en-US]
features: [Intl.NumberFormat-unified] features: [Intl.NumberFormat-unified]
---*/ ---*/
@ -22,49 +22,64 @@ function verifyFormatParts(actual, expected, message) {
const tests = [ const tests = [
[ [
"auto", "auto",
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"integer","value":"987"}], [{"type":"integer","value":"987"}],
[{"type":"infinity","value":"∞"}],
[{"type":"nan","value":"NaN"}],
], ],
[ [
"always", "always",
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"plusSign","value":"+"},{"type":"integer","value":"0"}], [{"type":"plusSign","value":"+"},{"type":"integer","value":"0"}],
[{"type":"plusSign","value":"+"},{"type":"integer","value":"0"}], [{"type":"plusSign","value":"+"},{"type":"integer","value":"0"}],
[{"type":"plusSign","value":"+"},{"type":"integer","value":"987"}], [{"type":"plusSign","value":"+"},{"type":"integer","value":"987"}],
[{"type":"plusSign","value":"+"},{"type":"infinity","value":"∞"}],
[{"type":"plusSign","value":"+"},{"type":"nan","value":"NaN"}],
], ],
[ [
"never", "never",
[{"type":"infinity","value":"∞"}],
[{"type":"integer","value":"987"}], [{"type":"integer","value":"987"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"integer","value":"987"}], [{"type":"integer","value":"987"}],
[{"type":"infinity","value":"∞"}],
[{"type":"nan","value":"NaN"}],
], ],
[ [
"exceptZero", "exceptZero",
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"plusSign","value":"+"},{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"plusSign","value":"+"},{"type":"integer","value":"987"}], [{"type":"plusSign","value":"+"},{"type":"integer","value":"987"}],
[{"type":"plusSign","value":"+"},{"type":"infinity","value":"∞"}],
[{"type":"nan","value":"NaN"}],
], ],
]; ];
for (const [signDisplay, negative, negativeNearZero, negativeZero, zero, positiveNearZero, positive] of tests) { for (const [signDisplay, ...expected] of tests) {
const nf = new Intl.NumberFormat("en-US", {signDisplay}); const nf = new Intl.NumberFormat("en-US", {signDisplay});
verifyFormatParts(nf.formatToParts(-987), negative); verifyFormatParts(nf.formatToParts(-Infinity), expected[0], `-Infinity (${signDisplay})`);
verifyFormatParts(nf.formatToParts(-0.0001), negativeNearZero); verifyFormatParts(nf.formatToParts(-987), expected[1], `-987 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(-0), negativeZero); verifyFormatParts(nf.formatToParts(-0.0001), expected[2], `-0.0001 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(0), zero); verifyFormatParts(nf.formatToParts(-0), expected[3], `-0 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(0.0001), positiveNearZero); verifyFormatParts(nf.formatToParts(0), expected[4], `0 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(987), positive); verifyFormatParts(nf.formatToParts(0.0001), expected[5], `0.0001 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(987), expected[6], `987 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(Infinity), expected[7], `Infinity (${signDisplay})`);
verifyFormatParts(nf.formatToParts(NaN), expected[8], `NaN (${signDisplay})`);
} }

View File

@ -3,7 +3,7 @@
/*--- /*---
esid: sec-intl.numberformat.prototype.formattoparts esid: sec-intl.numberformat.prototype.formattoparts
description: Checks handling of the compactDisplay option to the NumberFormat constructor. description: Checks handling of the signDisplay option to the NumberFormat constructor.
locale: [ja-JP] locale: [ja-JP]
features: [Intl.NumberFormat-unified] features: [Intl.NumberFormat-unified]
---*/ ---*/
@ -22,49 +22,64 @@ function verifyFormatParts(actual, expected, message) {
const tests = [ const tests = [
[ [
"auto", "auto",
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"integer","value":"987"}], [{"type":"integer","value":"987"}],
[{"type":"infinity","value":"∞"}],
[{"type":"nan","value":"NaN"}],
], ],
[ [
"always", "always",
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"plusSign","value":"+"},{"type":"integer","value":"0"}], [{"type":"plusSign","value":"+"},{"type":"integer","value":"0"}],
[{"type":"plusSign","value":"+"},{"type":"integer","value":"0"}], [{"type":"plusSign","value":"+"},{"type":"integer","value":"0"}],
[{"type":"plusSign","value":"+"},{"type":"integer","value":"987"}], [{"type":"plusSign","value":"+"},{"type":"integer","value":"987"}],
[{"type":"plusSign","value":"+"},{"type":"infinity","value":"∞"}],
[{"type":"plusSign","value":"+"},{"type":"nan","value":"NaN"}],
], ],
[ [
"never", "never",
[{"type":"infinity","value":"∞"}],
[{"type":"integer","value":"987"}], [{"type":"integer","value":"987"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"integer","value":"987"}], [{"type":"integer","value":"987"}],
[{"type":"infinity","value":"∞"}],
[{"type":"nan","value":"NaN"}],
], ],
[ [
"exceptZero", "exceptZero",
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"plusSign","value":"+"},{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"plusSign","value":"+"},{"type":"integer","value":"987"}], [{"type":"plusSign","value":"+"},{"type":"integer","value":"987"}],
[{"type":"plusSign","value":"+"},{"type":"infinity","value":"∞"}],
[{"type":"nan","value":"NaN"}],
], ],
]; ];
for (const [signDisplay, negative, negativeNearZero, negativeZero, zero, positiveNearZero, positive] of tests) { for (const [signDisplay, ...expected] of tests) {
const nf = new Intl.NumberFormat("ja-JP", {signDisplay}); const nf = new Intl.NumberFormat("ja-JP", {signDisplay});
verifyFormatParts(nf.formatToParts(-987), negative); verifyFormatParts(nf.formatToParts(-Infinity), expected[0], `-Infinity (${signDisplay})`);
verifyFormatParts(nf.formatToParts(-0.0001), negativeNearZero); verifyFormatParts(nf.formatToParts(-987), expected[1], `-987 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(-0), negativeZero); verifyFormatParts(nf.formatToParts(-0.0001), expected[2], `-0.0001 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(0), zero); verifyFormatParts(nf.formatToParts(-0), expected[3], `-0 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(0.0001), positiveNearZero); verifyFormatParts(nf.formatToParts(0), expected[4], `0 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(987), positive); verifyFormatParts(nf.formatToParts(0.0001), expected[5], `0.0001 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(987), expected[6], `987 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(Infinity), expected[7], `Infinity (${signDisplay})`);
verifyFormatParts(nf.formatToParts(NaN), expected[8], `NaN (${signDisplay})`);
} }

View File

@ -3,7 +3,7 @@
/*--- /*---
esid: sec-intl.numberformat.prototype.formattoparts esid: sec-intl.numberformat.prototype.formattoparts
description: Checks handling of the compactDisplay option to the NumberFormat constructor. description: Checks handling of the signDisplay option to the NumberFormat constructor.
locale: [ko-KR] locale: [ko-KR]
features: [Intl.NumberFormat-unified] features: [Intl.NumberFormat-unified]
---*/ ---*/
@ -22,49 +22,64 @@ function verifyFormatParts(actual, expected, message) {
const tests = [ const tests = [
[ [
"auto", "auto",
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"integer","value":"987"}], [{"type":"integer","value":"987"}],
[{"type":"infinity","value":"∞"}],
[{"type":"nan","value":"NaN"}],
], ],
[ [
"always", "always",
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"plusSign","value":"+"},{"type":"integer","value":"0"}], [{"type":"plusSign","value":"+"},{"type":"integer","value":"0"}],
[{"type":"plusSign","value":"+"},{"type":"integer","value":"0"}], [{"type":"plusSign","value":"+"},{"type":"integer","value":"0"}],
[{"type":"plusSign","value":"+"},{"type":"integer","value":"987"}], [{"type":"plusSign","value":"+"},{"type":"integer","value":"987"}],
[{"type":"plusSign","value":"+"},{"type":"infinity","value":"∞"}],
[{"type":"plusSign","value":"+"},{"type":"nan","value":"NaN"}],
], ],
[ [
"never", "never",
[{"type":"infinity","value":"∞"}],
[{"type":"integer","value":"987"}], [{"type":"integer","value":"987"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"integer","value":"987"}], [{"type":"integer","value":"987"}],
[{"type":"infinity","value":"∞"}],
[{"type":"nan","value":"NaN"}],
], ],
[ [
"exceptZero", "exceptZero",
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"plusSign","value":"+"},{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"plusSign","value":"+"},{"type":"integer","value":"987"}], [{"type":"plusSign","value":"+"},{"type":"integer","value":"987"}],
[{"type":"plusSign","value":"+"},{"type":"infinity","value":"∞"}],
[{"type":"nan","value":"NaN"}],
], ],
]; ];
for (const [signDisplay, negative, negativeNearZero, negativeZero, zero, positiveNearZero, positive] of tests) { for (const [signDisplay, ...expected] of tests) {
const nf = new Intl.NumberFormat("ko-KR", {signDisplay}); const nf = new Intl.NumberFormat("ko-KR", {signDisplay});
verifyFormatParts(nf.formatToParts(-987), negative); verifyFormatParts(nf.formatToParts(-Infinity), expected[0], `-Infinity (${signDisplay})`);
verifyFormatParts(nf.formatToParts(-0.0001), negativeNearZero); verifyFormatParts(nf.formatToParts(-987), expected[1], `-987 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(-0), negativeZero); verifyFormatParts(nf.formatToParts(-0.0001), expected[2], `-0.0001 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(0), zero); verifyFormatParts(nf.formatToParts(-0), expected[3], `-0 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(0.0001), positiveNearZero); verifyFormatParts(nf.formatToParts(0), expected[4], `0 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(987), positive); verifyFormatParts(nf.formatToParts(0.0001), expected[5], `0.0001 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(987), expected[6], `987 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(Infinity), expected[7], `Infinity (${signDisplay})`);
verifyFormatParts(nf.formatToParts(NaN), expected[8], `NaN (${signDisplay})`);
} }

View File

@ -3,7 +3,7 @@
/*--- /*---
esid: sec-intl.numberformat.prototype.formattoparts esid: sec-intl.numberformat.prototype.formattoparts
description: Checks handling of the compactDisplay option to the NumberFormat constructor. description: Checks handling of the signDisplay option to the NumberFormat constructor.
locale: [zh-TW] locale: [zh-TW]
features: [Intl.NumberFormat-unified] features: [Intl.NumberFormat-unified]
---*/ ---*/
@ -22,49 +22,64 @@ function verifyFormatParts(actual, expected, message) {
const tests = [ const tests = [
[ [
"auto", "auto",
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"integer","value":"987"}], [{"type":"integer","value":"987"}],
[{"type":"infinity","value":"∞"}],
[{"type":"nan","value":"非數值"}],
], ],
[ [
"always", "always",
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"plusSign","value":"+"},{"type":"integer","value":"0"}], [{"type":"plusSign","value":"+"},{"type":"integer","value":"0"}],
[{"type":"plusSign","value":"+"},{"type":"integer","value":"0"}], [{"type":"plusSign","value":"+"},{"type":"integer","value":"0"}],
[{"type":"plusSign","value":"+"},{"type":"integer","value":"987"}], [{"type":"plusSign","value":"+"},{"type":"integer","value":"987"}],
[{"type":"plusSign","value":"+"},{"type":"infinity","value":"∞"}],
[{"type":"plusSign","value":"+"},{"type":"nan","value":"非數值"}],
], ],
[ [
"never", "never",
[{"type":"infinity","value":"∞"}],
[{"type":"integer","value":"987"}], [{"type":"integer","value":"987"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"integer","value":"987"}], [{"type":"integer","value":"987"}],
[{"type":"infinity","value":"∞"}],
[{"type":"nan","value":"非數值"}],
], ],
[ [
"exceptZero", "exceptZero",
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}], [{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"plusSign","value":"+"},{"type":"integer","value":"0"}], [{"type":"integer","value":"0"}],
[{"type":"plusSign","value":"+"},{"type":"integer","value":"987"}], [{"type":"plusSign","value":"+"},{"type":"integer","value":"987"}],
[{"type":"plusSign","value":"+"},{"type":"infinity","value":"∞"}],
[{"type":"nan","value":"非數值"}],
], ],
]; ];
for (const [signDisplay, negative, negativeNearZero, negativeZero, zero, positiveNearZero, positive] of tests) { for (const [signDisplay, ...expected] of tests) {
const nf = new Intl.NumberFormat("zh-TW", {signDisplay}); const nf = new Intl.NumberFormat("zh-TW", {signDisplay});
verifyFormatParts(nf.formatToParts(-987), negative); verifyFormatParts(nf.formatToParts(-Infinity), expected[0], `-Infinity (${signDisplay})`);
verifyFormatParts(nf.formatToParts(-0.0001), negativeNearZero); verifyFormatParts(nf.formatToParts(-987), expected[1], `-987 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(-0), negativeZero); verifyFormatParts(nf.formatToParts(-0.0001), expected[2], `-0.0001 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(0), zero); verifyFormatParts(nf.formatToParts(-0), expected[3], `-0 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(0.0001), positiveNearZero); verifyFormatParts(nf.formatToParts(0), expected[4], `0 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(987), positive); verifyFormatParts(nf.formatToParts(0.0001), expected[5], `0.0001 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(987), expected[6], `987 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(Infinity), expected[7], `Infinity (${signDisplay})`);
verifyFormatParts(nf.formatToParts(NaN), expected[8], `NaN (${signDisplay})`);
} }

View File

@ -0,0 +1,24 @@
// Copyright 2019 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-intl.numberformat.prototype.resolvedoptions
description: Verifies the existence of the compactDisplay property for the object returned by resolvedOptions().
features: [Intl.NumberFormat-unified]
---*/
for (const notation of [undefined, "standard", "scientific", "engineering"]) {
const options = new Intl.NumberFormat([], {
notation,
compactDisplay: "long",
}).resolvedOptions();
assert.sameValue("compactDisplay" in options, false, `There should be no compactDisplay property with notation=${notation}`);
assert.sameValue(options.compactDisplay, undefined, `The compactDisplay property should be undefined with notation=${notation}`);
}
const options = new Intl.NumberFormat([], {
notation: "compact",
compactDisplay: "long",
}).resolvedOptions();
assert.sameValue("compactDisplay" in options, true, "There should be a compactDisplay property with notation=compact");
assert.sameValue(options.compactDisplay, "long", "The compactDisplay property should be defined with notation=compact");