|
@@ -171,6 +171,26 @@ describe("style=decimal", () => {
|
|
|
]);
|
|
|
});
|
|
|
|
|
|
+ test("signDisplay=negative", () => {
|
|
|
+ const en = new Intl.NumberFormat("en", { signDisplay: "negative" });
|
|
|
+ expect(en.formatToParts(0)).toEqual([{ type: "integer", value: "0" }]);
|
|
|
+ expect(en.formatToParts(1)).toEqual([{ type: "integer", value: "1" }]);
|
|
|
+ expect(en.formatToParts(-0)).toEqual([{ type: "integer", value: "0" }]);
|
|
|
+ expect(en.formatToParts(-1)).toEqual([
|
|
|
+ { type: "minusSign", value: "-" },
|
|
|
+ { type: "integer", value: "1" },
|
|
|
+ ]);
|
|
|
+
|
|
|
+ const ar = new Intl.NumberFormat("ar", { signDisplay: "negative" });
|
|
|
+ expect(ar.formatToParts(0)).toEqual([{ type: "integer", value: "\u0660" }]);
|
|
|
+ expect(ar.formatToParts(1)).toEqual([{ type: "integer", value: "\u0661" }]);
|
|
|
+ expect(ar.formatToParts(-0)).toEqual([{ type: "integer", value: "\u0660" }]);
|
|
|
+ expect(ar.formatToParts(-1)).toEqual([
|
|
|
+ { type: "minusSign", value: "\u061c-" },
|
|
|
+ { type: "integer", value: "\u0661" },
|
|
|
+ ]);
|
|
|
+ });
|
|
|
+
|
|
|
test("useGrouping=always", () => {
|
|
|
const en = new Intl.NumberFormat("en", { useGrouping: "always" });
|
|
|
expect(en.formatToParts(1234)).toEqual([
|
|
@@ -588,6 +608,46 @@ describe("style=percent", () => {
|
|
|
{ type: "percentSign", value: "\u066a\u061c" },
|
|
|
]);
|
|
|
});
|
|
|
+
|
|
|
+ test("signDisplay=negative", () => {
|
|
|
+ const en = new Intl.NumberFormat("en", { style: "percent", signDisplay: "negative" });
|
|
|
+ expect(en.formatToParts(0.0)).toEqual([
|
|
|
+ { type: "integer", value: "0" },
|
|
|
+ { type: "percentSign", value: "%" },
|
|
|
+ ]);
|
|
|
+ expect(en.formatToParts(0.01)).toEqual([
|
|
|
+ { type: "integer", value: "1" },
|
|
|
+ { type: "percentSign", value: "%" },
|
|
|
+ ]);
|
|
|
+ expect(en.formatToParts(-0.0)).toEqual([
|
|
|
+ { type: "integer", value: "0" },
|
|
|
+ { type: "percentSign", value: "%" },
|
|
|
+ ]);
|
|
|
+ expect(en.formatToParts(-0.01)).toEqual([
|
|
|
+ { type: "minusSign", value: "-" },
|
|
|
+ { type: "integer", value: "1" },
|
|
|
+ { type: "percentSign", value: "%" },
|
|
|
+ ]);
|
|
|
+
|
|
|
+ const ar = new Intl.NumberFormat("ar", { style: "percent", signDisplay: "negative" });
|
|
|
+ expect(ar.formatToParts(0.0)).toEqual([
|
|
|
+ { type: "integer", value: "\u0660" },
|
|
|
+ { type: "percentSign", value: "\u066a\u061c" },
|
|
|
+ ]);
|
|
|
+ expect(ar.formatToParts(0.01)).toEqual([
|
|
|
+ { type: "integer", value: "\u0661" },
|
|
|
+ { type: "percentSign", value: "\u066a\u061c" },
|
|
|
+ ]);
|
|
|
+ expect(ar.formatToParts(-0.0)).toEqual([
|
|
|
+ { type: "integer", value: "\u0660" },
|
|
|
+ { type: "percentSign", value: "\u066a\u061c" },
|
|
|
+ ]);
|
|
|
+ expect(ar.formatToParts(-0.01)).toEqual([
|
|
|
+ { type: "minusSign", value: "\u061c-" },
|
|
|
+ { type: "integer", value: "\u0661" },
|
|
|
+ { type: "percentSign", value: "\u066a\u061c" },
|
|
|
+ ]);
|
|
|
+ });
|
|
|
});
|
|
|
|
|
|
describe("style=currency", () => {
|
|
@@ -1133,6 +1193,107 @@ describe("style=currency", () => {
|
|
|
{ type: "literal", value: ")" },
|
|
|
]);
|
|
|
});
|
|
|
+
|
|
|
+ test("signDisplay=negative", () => {
|
|
|
+ const en = new Intl.NumberFormat("en", {
|
|
|
+ style: "currency",
|
|
|
+ currency: "USD",
|
|
|
+ signDisplay: "negative",
|
|
|
+ });
|
|
|
+ expect(en.formatToParts(0)).toEqual([
|
|
|
+ { type: "currency", value: "$" },
|
|
|
+ { type: "integer", value: "0" },
|
|
|
+ { type: "decimal", value: "." },
|
|
|
+ { type: "fraction", value: "00" },
|
|
|
+ ]);
|
|
|
+ expect(en.formatToParts(1)).toEqual([
|
|
|
+ { type: "currency", value: "$" },
|
|
|
+ { type: "integer", value: "1" },
|
|
|
+ { type: "decimal", value: "." },
|
|
|
+ { type: "fraction", value: "00" },
|
|
|
+ ]);
|
|
|
+ expect(en.formatToParts(-0)).toEqual([
|
|
|
+ { type: "currency", value: "$" },
|
|
|
+ { type: "integer", value: "0" },
|
|
|
+ { type: "decimal", value: "." },
|
|
|
+ { type: "fraction", value: "00" },
|
|
|
+ ]);
|
|
|
+ expect(en.formatToParts(-1)).toEqual([
|
|
|
+ { type: "minusSign", value: "-" },
|
|
|
+ { type: "currency", value: "$" },
|
|
|
+ { type: "integer", value: "1" },
|
|
|
+ { type: "decimal", value: "." },
|
|
|
+ { type: "fraction", value: "00" },
|
|
|
+ ]);
|
|
|
+
|
|
|
+ const ar = new Intl.NumberFormat("ar", {
|
|
|
+ style: "currency",
|
|
|
+ currency: "USD",
|
|
|
+ signDisplay: "negative",
|
|
|
+ });
|
|
|
+ expect(ar.formatToParts(0)).toEqual([
|
|
|
+ { type: "integer", value: "\u0660" },
|
|
|
+ { type: "decimal", value: "\u066b" },
|
|
|
+ { type: "fraction", value: "\u0660\u0660" },
|
|
|
+ { type: "literal", value: "\u00a0" },
|
|
|
+ { type: "currency", value: "US$" },
|
|
|
+ ]);
|
|
|
+ expect(ar.formatToParts(1)).toEqual([
|
|
|
+ { type: "integer", value: "\u0661" },
|
|
|
+ { type: "decimal", value: "\u066b" },
|
|
|
+ { type: "fraction", value: "\u0660\u0660" },
|
|
|
+ { type: "literal", value: "\u00a0" },
|
|
|
+ { type: "currency", value: "US$" },
|
|
|
+ ]);
|
|
|
+ expect(ar.formatToParts(-0)).toEqual([
|
|
|
+ { type: "integer", value: "\u0660" },
|
|
|
+ { type: "decimal", value: "\u066b" },
|
|
|
+ { type: "fraction", value: "\u0660\u0660" },
|
|
|
+ { type: "literal", value: "\u00a0" },
|
|
|
+ { type: "currency", value: "US$" },
|
|
|
+ ]);
|
|
|
+ expect(ar.formatToParts(-1)).toEqual([
|
|
|
+ { type: "minusSign", value: "\u061c-" },
|
|
|
+ { type: "integer", value: "\u0661" },
|
|
|
+ { type: "decimal", value: "\u066b" },
|
|
|
+ { type: "fraction", value: "\u0660\u0660" },
|
|
|
+ { type: "literal", value: "\u00a0" },
|
|
|
+ { type: "currency", value: "US$" },
|
|
|
+ ]);
|
|
|
+
|
|
|
+ const zh = new Intl.NumberFormat("zh-Hant-u-nu-hanidec", {
|
|
|
+ style: "currency",
|
|
|
+ currency: "USD",
|
|
|
+ currencySign: "accounting",
|
|
|
+ signDisplay: "negative",
|
|
|
+ });
|
|
|
+ expect(zh.formatToParts(0)).toEqual([
|
|
|
+ { type: "currency", value: "US$" },
|
|
|
+ { type: "integer", value: "〇" },
|
|
|
+ { type: "decimal", value: "." },
|
|
|
+ { type: "fraction", value: "〇〇" },
|
|
|
+ ]);
|
|
|
+ expect(zh.formatToParts(1)).toEqual([
|
|
|
+ { type: "currency", value: "US$" },
|
|
|
+ { type: "integer", value: "一" },
|
|
|
+ { type: "decimal", value: "." },
|
|
|
+ { type: "fraction", value: "〇〇" },
|
|
|
+ ]);
|
|
|
+ expect(zh.formatToParts(-0)).toEqual([
|
|
|
+ { type: "currency", value: "US$" },
|
|
|
+ { type: "integer", value: "〇" },
|
|
|
+ { type: "decimal", value: "." },
|
|
|
+ { type: "fraction", value: "〇〇" },
|
|
|
+ ]);
|
|
|
+ expect(zh.formatToParts(-1)).toEqual([
|
|
|
+ { type: "literal", value: "(" },
|
|
|
+ { type: "currency", value: "US$" },
|
|
|
+ { type: "integer", value: "一" },
|
|
|
+ { type: "decimal", value: "." },
|
|
|
+ { type: "fraction", value: "〇〇" },
|
|
|
+ { type: "literal", value: ")" },
|
|
|
+ ]);
|
|
|
+ });
|
|
|
});
|
|
|
|
|
|
describe("style=unit", () => {
|