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"]) {
assert.throws(unit === undefined ? TypeError : RangeError, () => {
new Intl.NumberFormat([], {
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);
for (const unit of ["test", "MILE", "kB"]) {
for (const style of [undefined, "decimal", "currency", "unit"]) {
assert.throws(RangeError, () => {
new Intl.NumberFormat([], { style, unit })
}, `{ style: ${style}, unit: ${unit} }`);
}
}
@ -37,4 +25,69 @@ const nf = new Intl.NumberFormat([], {
style: "percent",
});
assert.sameValue(nf.resolvedOptions().style, "percent");
assert.sameValue("unit" in nf.resolvedOptions(), false);
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(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 = [
[
"0.000345",
0.000345,
"345E-6",
"3,45E-4",
],
[
"0.345",
0.345,
"345E-3",
"3,45E-1",
],
[
"3.45",
3.45,
"3,45E0",
"3,45E0",
],
[
"34.5",
34.5,
"34,5E0",
"3,45E1",
],
[
"543",
543,
"543E0",
"5,43E2",
],
[
"5430",
5430,
"5,43E3",
"5,43E3",
],
[
"543000",
543000,
"543E3",
"5,43E5",
],
[
"543211.1",
543211.1,
"543,211E3",
"5,432E5",
],
[
-Infinity,
"-∞",
"-∞",
],
[
Infinity,
"∞",
"∞",
],
[
NaN,
"NaN",
"NaN",
],
];
for (const [number, engineering, scientific] of tests) {

View File

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

View File

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

View File

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

View File

@ -11,45 +11,60 @@ features: [Intl.NumberFormat-unified]
const tests = [
[
"0.000345",
0.000345,
"345E-6",
"3.45E-4",
],
[
"0.345",
0.345,
"345E-3",
"3.45E-1",
],
[
"3.45",
3.45,
"3.45E0",
"3.45E0",
],
[
"34.5",
34.5,
"34.5E0",
"3.45E1",
],
[
"543",
543,
"543E0",
"5.43E2",
],
[
"5430",
5430,
"5.43E3",
"5.43E3",
],
[
"543000",
543000,
"543E3",
"5.43E5",
],
[
"543211.1",
543211.1,
"543.211E3",
"5.432E5",
],
[
-Infinity,
"-∞",
"-∞",
],
[
Infinity,
"∞",
"∞",
],
[
NaN,
"非數值",
"非數值",
],
];
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.0159), "0,016");
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", {
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.0159), "0,016");
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.0159), "0.016");
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", {
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.0159), "0.016");
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.0159), "0.016");
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", {
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.0159), "0.016");
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.0159), "0.016");
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", {
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.0159), "0.016");
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.0159), "0.016");
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", {
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.0159), "0.016");
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
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]
features: [Intl.NumberFormat-unified]
---*/
@ -12,49 +12,64 @@ features: [Intl.NumberFormat-unified]
const tests = [
[
"auto",
"-∞",
"-987",
"-0",
"-0",
"0",
"0",
"987",
"∞",
"NaN",
],
[
"always",
"-∞",
"-987",
"-0",
"-0",
"+0",
"+0",
"+987",
"+∞",
"+NaN",
],
[
"never",
"∞",
"987",
"0",
"0",
"0",
"0",
"987",
"∞",
"NaN",
],
[
"exceptZero",
"-∞",
"-987",
"-0",
"-0",
"0",
"+0",
"0",
"+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});
assert.sameValue(nf.format(-987), negative);
assert.sameValue(nf.format(-0.0001), negativeNearZero);
assert.sameValue(nf.format(-0), negativeZero);
assert.sameValue(nf.format(0), zero);
assert.sameValue(nf.format(0.0001), positiveNearZero);
assert.sameValue(nf.format(987), positive);
assert.sameValue(nf.format(-Infinity), expected[0], `-Infinity (${signDisplay})`);
assert.sameValue(nf.format(-987), expected[1], `-987 (${signDisplay})`);
assert.sameValue(nf.format(-0.0001), expected[2], `-0.0001 (${signDisplay})`);
assert.sameValue(nf.format(-0), expected[3], `-0 (${signDisplay})`);
assert.sameValue(nf.format(0), expected[4], `0 (${signDisplay})`);
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
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]
features: [Intl.NumberFormat-unified]
---*/
@ -12,49 +12,64 @@ features: [Intl.NumberFormat-unified]
const tests = [
[
"auto",
"-∞",
"-987",
"-0",
"-0",
"0",
"0",
"987",
"∞",
"NaN",
],
[
"always",
"-∞",
"-987",
"-0",
"-0",
"+0",
"+0",
"+987",
"+∞",
"+NaN",
],
[
"never",
"∞",
"987",
"0",
"0",
"0",
"0",
"987",
"∞",
"NaN",
],
[
"exceptZero",
"-∞",
"-987",
"-0",
"-0",
"0",
"+0",
"0",
"+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});
assert.sameValue(nf.format(-987), negative);
assert.sameValue(nf.format(-0.0001), negativeNearZero);
assert.sameValue(nf.format(-0), negativeZero);
assert.sameValue(nf.format(0), zero);
assert.sameValue(nf.format(0.0001), positiveNearZero);
assert.sameValue(nf.format(987), positive);
assert.sameValue(nf.format(-Infinity), expected[0], `-Infinity (${signDisplay})`);
assert.sameValue(nf.format(-987), expected[1], `-987 (${signDisplay})`);
assert.sameValue(nf.format(-0.0001), expected[2], `-0.0001 (${signDisplay})`);
assert.sameValue(nf.format(-0), expected[3], `-0 (${signDisplay})`);
assert.sameValue(nf.format(0), expected[4], `0 (${signDisplay})`);
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
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]
features: [Intl.NumberFormat-unified]
---*/
@ -12,49 +12,64 @@ features: [Intl.NumberFormat-unified]
const tests = [
[
"auto",
"-∞",
"-987",
"-0",
"-0",
"0",
"0",
"987",
"∞",
"NaN",
],
[
"always",
"-∞",
"-987",
"-0",
"-0",
"+0",
"+0",
"+987",
"+∞",
"+NaN",
],
[
"never",
"∞",
"987",
"0",
"0",
"0",
"0",
"987",
"∞",
"NaN",
],
[
"exceptZero",
"-∞",
"-987",
"-0",
"-0",
"0",
"+0",
"0",
"+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});
assert.sameValue(nf.format(-987), negative);
assert.sameValue(nf.format(-0.0001), negativeNearZero);
assert.sameValue(nf.format(-0), negativeZero);
assert.sameValue(nf.format(0), zero);
assert.sameValue(nf.format(0.0001), positiveNearZero);
assert.sameValue(nf.format(987), positive);
assert.sameValue(nf.format(-Infinity), expected[0], `-Infinity (${signDisplay})`);
assert.sameValue(nf.format(-987), expected[1], `-987 (${signDisplay})`);
assert.sameValue(nf.format(-0.0001), expected[2], `-0.0001 (${signDisplay})`);
assert.sameValue(nf.format(-0), expected[3], `-0 (${signDisplay})`);
assert.sameValue(nf.format(0), expected[4], `0 (${signDisplay})`);
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
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]
features: [Intl.NumberFormat-unified]
---*/
@ -12,49 +12,64 @@ features: [Intl.NumberFormat-unified]
const tests = [
[
"auto",
"-∞",
"-987",
"-0",
"-0",
"0",
"0",
"987",
"∞",
"NaN",
],
[
"always",
"-∞",
"-987",
"-0",
"-0",
"+0",
"+0",
"+987",
"+∞",
"+NaN",
],
[
"never",
"∞",
"987",
"0",
"0",
"0",
"0",
"987",
"∞",
"NaN",
],
[
"exceptZero",
"-∞",
"-987",
"-0",
"-0",
"0",
"+0",
"0",
"+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});
assert.sameValue(nf.format(-987), negative);
assert.sameValue(nf.format(-0.0001), negativeNearZero);
assert.sameValue(nf.format(-0), negativeZero);
assert.sameValue(nf.format(0), zero);
assert.sameValue(nf.format(0.0001), positiveNearZero);
assert.sameValue(nf.format(987), positive);
assert.sameValue(nf.format(-Infinity), expected[0], `-Infinity (${signDisplay})`);
assert.sameValue(nf.format(-987), expected[1], `-987 (${signDisplay})`);
assert.sameValue(nf.format(-0.0001), expected[2], `-0.0001 (${signDisplay})`);
assert.sameValue(nf.format(-0), expected[3], `-0 (${signDisplay})`);
assert.sameValue(nf.format(0), expected[4], `0 (${signDisplay})`);
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
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]
features: [Intl.NumberFormat-unified]
---*/
@ -12,49 +12,64 @@ features: [Intl.NumberFormat-unified]
const tests = [
[
"auto",
"-∞",
"-987",
"-0",
"-0",
"0",
"0",
"987",
"∞",
"非數值",
],
[
"always",
"-∞",
"-987",
"-0",
"-0",
"+0",
"+0",
"+987",
"+∞",
"+非數值",
],
[
"never",
"∞",
"987",
"0",
"0",
"0",
"0",
"987",
"∞",
"非數值",
],
[
"exceptZero",
"-∞",
"-987",
"-0",
"-0",
"0",
"+0",
"0",
"+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});
assert.sameValue(nf.format(-987), negative);
assert.sameValue(nf.format(-0.0001), negativeNearZero);
assert.sameValue(nf.format(-0), negativeZero);
assert.sameValue(nf.format(0), zero);
assert.sameValue(nf.format(0.0001), positiveNearZero);
assert.sameValue(nf.format(987), positive);
assert.sameValue(nf.format(-Infinity), expected[0], `-Infinity (${signDisplay})`);
assert.sameValue(nf.format(-987), expected[1], `-987 (${signDisplay})`);
assert.sameValue(nf.format(-0.0001), expected[2], `-0.0001 (${signDisplay})`);
assert.sameValue(nf.format(-0), expected[3], `-0 (${signDisplay})`);
assert.sameValue(nf.format(0), expected[4], `0 (${signDisplay})`);
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 = [
[
"0.000345",
0.000345,
[{"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"}],
],
[
"0.345",
0.345,
[{"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"}],
],
[
"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"}],
],
[
"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":"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":"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"}],
],
[
"543000",
543000,
[{"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"}],
],
[
"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":"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) {

View File

@ -21,45 +21,60 @@ function verifyFormatParts(actual, expected, message) {
const tests = [
[
"0.000345",
0.000345,
[{"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"}],
],
[
"0.345",
0.345,
[{"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"}],
],
[
"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"}],
],
[
"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":"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":"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"}],
],
[
"543000",
543000,
[{"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"}],
],
[
"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":"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) {

View File

@ -21,45 +21,60 @@ function verifyFormatParts(actual, expected, message) {
const tests = [
[
"0.000345",
0.000345,
[{"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"}],
],
[
"0.345",
0.345,
[{"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"}],
],
[
"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"}],
],
[
"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":"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":"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"}],
],
[
"543000",
543000,
[{"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"}],
],
[
"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":"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) {

View File

@ -21,45 +21,60 @@ function verifyFormatParts(actual, expected, message) {
const tests = [
[
"0.000345",
0.000345,
[{"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"}],
],
[
"0.345",
0.345,
[{"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"}],
],
[
"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"}],
],
[
"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":"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":"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"}],
],
[
"543000",
543000,
[{"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"}],
],
[
"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":"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) {

View File

@ -21,45 +21,60 @@ function verifyFormatParts(actual, expected, message) {
const tests = [
[
"0.000345",
0.000345,
[{"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"}],
],
[
"0.345",
0.345,
[{"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"}],
],
[
"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"}],
],
[
"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":"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":"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"}],
],
[
"543000",
543000,
[{"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"}],
],
[
"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":"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) {

View File

@ -63,6 +63,18 @@ const tests = [
0.00159,
[{"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) {

View File

@ -63,6 +63,18 @@ const tests = [
0.00159,
[{"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) {

View File

@ -59,6 +59,18 @@ const tests = [
0.00159,
[{"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) {

View File

@ -59,6 +59,18 @@ const tests = [
0.00159,
[{"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) {

View File

@ -59,6 +59,18 @@ const tests = [
0.00159,
[{"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) {

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
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]
features: [Intl.NumberFormat-unified]
---*/
@ -22,49 +22,64 @@ function verifyFormatParts(actual, expected, message) {
const tests = [
[
"auto",
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}],
[{"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":"987"}],
[{"type":"infinity","value":"∞"}],
[{"type":"nan","value":"NaN"}],
],
[
"always",
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}],
[{"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":"987"}],
[{"type":"plusSign","value":"+"},{"type":"infinity","value":"∞"}],
[{"type":"plusSign","value":"+"},{"type":"nan","value":"NaN"}],
],
[
"never",
[{"type":"infinity","value":"∞"}],
[{"type":"integer","value":"987"}],
[{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}],
[{"type":"integer","value":"987"}],
[{"type":"infinity","value":"∞"}],
[{"type":"nan","value":"NaN"}],
],
[
"exceptZero",
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"minusSign","value":"-"},{"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":"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});
verifyFormatParts(nf.formatToParts(-987), negative);
verifyFormatParts(nf.formatToParts(-0.0001), negativeNearZero);
verifyFormatParts(nf.formatToParts(-0), negativeZero);
verifyFormatParts(nf.formatToParts(0), zero);
verifyFormatParts(nf.formatToParts(0.0001), positiveNearZero);
verifyFormatParts(nf.formatToParts(987), positive);
verifyFormatParts(nf.formatToParts(-Infinity), expected[0], `-Infinity (${signDisplay})`);
verifyFormatParts(nf.formatToParts(-987), expected[1], `-987 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(-0.0001), expected[2], `-0.0001 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(-0), expected[3], `-0 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(0), expected[4], `0 (${signDisplay})`);
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
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]
features: [Intl.NumberFormat-unified]
---*/
@ -22,49 +22,64 @@ function verifyFormatParts(actual, expected, message) {
const tests = [
[
"auto",
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}],
[{"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":"987"}],
[{"type":"infinity","value":"∞"}],
[{"type":"nan","value":"NaN"}],
],
[
"always",
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}],
[{"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":"987"}],
[{"type":"plusSign","value":"+"},{"type":"infinity","value":"∞"}],
[{"type":"plusSign","value":"+"},{"type":"nan","value":"NaN"}],
],
[
"never",
[{"type":"infinity","value":"∞"}],
[{"type":"integer","value":"987"}],
[{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}],
[{"type":"integer","value":"987"}],
[{"type":"infinity","value":"∞"}],
[{"type":"nan","value":"NaN"}],
],
[
"exceptZero",
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"minusSign","value":"-"},{"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":"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});
verifyFormatParts(nf.formatToParts(-987), negative);
verifyFormatParts(nf.formatToParts(-0.0001), negativeNearZero);
verifyFormatParts(nf.formatToParts(-0), negativeZero);
verifyFormatParts(nf.formatToParts(0), zero);
verifyFormatParts(nf.formatToParts(0.0001), positiveNearZero);
verifyFormatParts(nf.formatToParts(987), positive);
verifyFormatParts(nf.formatToParts(-Infinity), expected[0], `-Infinity (${signDisplay})`);
verifyFormatParts(nf.formatToParts(-987), expected[1], `-987 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(-0.0001), expected[2], `-0.0001 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(-0), expected[3], `-0 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(0), expected[4], `0 (${signDisplay})`);
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
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]
features: [Intl.NumberFormat-unified]
---*/
@ -22,49 +22,64 @@ function verifyFormatParts(actual, expected, message) {
const tests = [
[
"auto",
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}],
[{"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":"987"}],
[{"type":"infinity","value":"∞"}],
[{"type":"nan","value":"NaN"}],
],
[
"always",
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}],
[{"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":"987"}],
[{"type":"plusSign","value":"+"},{"type":"infinity","value":"∞"}],
[{"type":"plusSign","value":"+"},{"type":"nan","value":"NaN"}],
],
[
"never",
[{"type":"infinity","value":"∞"}],
[{"type":"integer","value":"987"}],
[{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}],
[{"type":"integer","value":"987"}],
[{"type":"infinity","value":"∞"}],
[{"type":"nan","value":"NaN"}],
],
[
"exceptZero",
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"minusSign","value":"-"},{"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":"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});
verifyFormatParts(nf.formatToParts(-987), negative);
verifyFormatParts(nf.formatToParts(-0.0001), negativeNearZero);
verifyFormatParts(nf.formatToParts(-0), negativeZero);
verifyFormatParts(nf.formatToParts(0), zero);
verifyFormatParts(nf.formatToParts(0.0001), positiveNearZero);
verifyFormatParts(nf.formatToParts(987), positive);
verifyFormatParts(nf.formatToParts(-Infinity), expected[0], `-Infinity (${signDisplay})`);
verifyFormatParts(nf.formatToParts(-987), expected[1], `-987 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(-0.0001), expected[2], `-0.0001 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(-0), expected[3], `-0 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(0), expected[4], `0 (${signDisplay})`);
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
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]
features: [Intl.NumberFormat-unified]
---*/
@ -22,49 +22,64 @@ function verifyFormatParts(actual, expected, message) {
const tests = [
[
"auto",
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}],
[{"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":"987"}],
[{"type":"infinity","value":"∞"}],
[{"type":"nan","value":"NaN"}],
],
[
"always",
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}],
[{"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":"987"}],
[{"type":"plusSign","value":"+"},{"type":"infinity","value":"∞"}],
[{"type":"plusSign","value":"+"},{"type":"nan","value":"NaN"}],
],
[
"never",
[{"type":"infinity","value":"∞"}],
[{"type":"integer","value":"987"}],
[{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}],
[{"type":"integer","value":"987"}],
[{"type":"infinity","value":"∞"}],
[{"type":"nan","value":"NaN"}],
],
[
"exceptZero",
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"minusSign","value":"-"},{"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":"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});
verifyFormatParts(nf.formatToParts(-987), negative);
verifyFormatParts(nf.formatToParts(-0.0001), negativeNearZero);
verifyFormatParts(nf.formatToParts(-0), negativeZero);
verifyFormatParts(nf.formatToParts(0), zero);
verifyFormatParts(nf.formatToParts(0.0001), positiveNearZero);
verifyFormatParts(nf.formatToParts(987), positive);
verifyFormatParts(nf.formatToParts(-Infinity), expected[0], `-Infinity (${signDisplay})`);
verifyFormatParts(nf.formatToParts(-987), expected[1], `-987 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(-0.0001), expected[2], `-0.0001 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(-0), expected[3], `-0 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(0), expected[4], `0 (${signDisplay})`);
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
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]
features: [Intl.NumberFormat-unified]
---*/
@ -22,49 +22,64 @@ function verifyFormatParts(actual, expected, message) {
const tests = [
[
"auto",
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}],
[{"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":"987"}],
[{"type":"infinity","value":"∞"}],
[{"type":"nan","value":"非數值"}],
],
[
"always",
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}],
[{"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":"987"}],
[{"type":"plusSign","value":"+"},{"type":"infinity","value":"∞"}],
[{"type":"plusSign","value":"+"},{"type":"nan","value":"非數值"}],
],
[
"never",
[{"type":"infinity","value":"∞"}],
[{"type":"integer","value":"987"}],
[{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}],
[{"type":"integer","value":"0"}],
[{"type":"integer","value":"987"}],
[{"type":"infinity","value":"∞"}],
[{"type":"nan","value":"非數值"}],
],
[
"exceptZero",
[{"type":"minusSign","value":"-"},{"type":"infinity","value":"∞"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"987"}],
[{"type":"minusSign","value":"-"},{"type":"integer","value":"0"}],
[{"type":"minusSign","value":"-"},{"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":"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});
verifyFormatParts(nf.formatToParts(-987), negative);
verifyFormatParts(nf.formatToParts(-0.0001), negativeNearZero);
verifyFormatParts(nf.formatToParts(-0), negativeZero);
verifyFormatParts(nf.formatToParts(0), zero);
verifyFormatParts(nf.formatToParts(0.0001), positiveNearZero);
verifyFormatParts(nf.formatToParts(987), positive);
verifyFormatParts(nf.formatToParts(-Infinity), expected[0], `-Infinity (${signDisplay})`);
verifyFormatParts(nf.formatToParts(-987), expected[1], `-987 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(-0.0001), expected[2], `-0.0001 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(-0), expected[3], `-0 (${signDisplay})`);
verifyFormatParts(nf.formatToParts(0), expected[4], `0 (${signDisplay})`);
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");