LibJS: Ensure tests using the "ar" locale use the "arab" number system

In ICU 76, the default was changed from "arab" to "latn". See:
c149724509

The whole point of these tests was to use a non-Latin numbering system.
This patch ensures that is the case to make following patches easier to
grok.
This commit is contained in:
Timothy Flynn 2025-01-18 13:27:07 -05:00 committed by Tim Flynn
commit 0763997591
Notes: github-actions[bot] 2025-01-18 22:57:49 +00:00
11 changed files with 286 additions and 179 deletions

View file

@ -17,11 +17,11 @@ test("default", () => {
"123,456,789,123,456,789,123,456,789,123,456,789"
);
const ar = new Intl.NumberFormat("ar");
expect(1n.toLocaleString("ar")).toBe("\u0661");
expect(12n.toLocaleString("ar")).toBe("\u0661\u0662");
expect(123n.toLocaleString("ar")).toBe("\u0661\u0662\u0663");
expect(123456789123456789123456789123456789n.toLocaleString("ar")).toBe(
const ar = new Intl.NumberFormat("ar-u-nu-arab");
expect(1n.toLocaleString("ar-u-nu-arab")).toBe("\u0661");
expect(12n.toLocaleString("ar-u-nu-arab")).toBe("\u0661\u0662");
expect(123n.toLocaleString("ar-u-nu-arab")).toBe("\u0661\u0662\u0663");
expect(123456789123456789123456789123456789n.toLocaleString("ar-u-nu-arab")).toBe(
"\u0661\u0662\u0663\u066c\u0664\u0665\u0666\u066c\u0667\u0668\u0669\u066c\u0661\u0662\u0663\u066c\u0664\u0665\u0666\u066c\u0667\u0668\u0669\u066c\u0661\u0662\u0663\u066c\u0664\u0665\u0666\u066c\u0667\u0668\u0669\u066c\u0661\u0662\u0663\u066c\u0664\u0665\u0666\u066c\u0667\u0668\u0669"
);
});
@ -31,9 +31,11 @@ test("integer digits", () => {
expect(12n.toLocaleString("en", { minimumIntegerDigits: 2 })).toBe("12");
expect(123n.toLocaleString("en", { minimumIntegerDigits: 2 })).toBe("123");
expect(1n.toLocaleString("ar", { minimumIntegerDigits: 2 })).toBe("\u0660\u0661");
expect(12n.toLocaleString("ar", { minimumIntegerDigits: 2 })).toBe("\u0661\u0662");
expect(123n.toLocaleString("ar", { minimumIntegerDigits: 2 })).toBe("\u0661\u0662\u0663");
expect(1n.toLocaleString("ar-u-nu-arab", { minimumIntegerDigits: 2 })).toBe("\u0660\u0661");
expect(12n.toLocaleString("ar-u-nu-arab", { minimumIntegerDigits: 2 })).toBe("\u0661\u0662");
expect(123n.toLocaleString("ar-u-nu-arab", { minimumIntegerDigits: 2 })).toBe(
"\u0661\u0662\u0663"
);
});
test("significant digits", () => {
@ -63,27 +65,51 @@ test("significant digits", () => {
).toBe("1,234,560");
expect(
1n.toLocaleString("ar", { minimumSignificantDigits: 4, maximumSignificantDigits: 6 })
1n.toLocaleString("ar-u-nu-arab", {
minimumSignificantDigits: 4,
maximumSignificantDigits: 6,
})
).toBe("\u0661\u066b\u0660\u0660\u0660");
expect(
12n.toLocaleString("ar", { minimumSignificantDigits: 4, maximumSignificantDigits: 6 })
12n.toLocaleString("ar-u-nu-arab", {
minimumSignificantDigits: 4,
maximumSignificantDigits: 6,
})
).toBe("\u0661\u0662\u066b\u0660\u0660");
expect(
123n.toLocaleString("ar", { minimumSignificantDigits: 4, maximumSignificantDigits: 6 })
123n.toLocaleString("ar-u-nu-arab", {
minimumSignificantDigits: 4,
maximumSignificantDigits: 6,
})
).toBe("\u0661\u0662\u0663\u066b\u0660");
expect(
1234n.toLocaleString("ar", { minimumSignificantDigits: 4, maximumSignificantDigits: 6 })
1234n.toLocaleString("ar-u-nu-arab", {
minimumSignificantDigits: 4,
maximumSignificantDigits: 6,
})
).toBe("\u0661\u066c\u0662\u0663\u0664");
expect(
12345n.toLocaleString("ar", { minimumSignificantDigits: 4, maximumSignificantDigits: 6 })
12345n.toLocaleString("ar-u-nu-arab", {
minimumSignificantDigits: 4,
maximumSignificantDigits: 6,
})
).toBe("\u0661\u0662\u066c\u0663\u0664\u0665");
expect(
123456n.toLocaleString("ar", { minimumSignificantDigits: 4, maximumSignificantDigits: 6 })
123456n.toLocaleString("ar-u-nu-arab", {
minimumSignificantDigits: 4,
maximumSignificantDigits: 6,
})
).toBe("\u0661\u0662\u0663\u066c\u0664\u0665\u0666");
expect(
1234567n.toLocaleString("ar", { minimumSignificantDigits: 4, maximumSignificantDigits: 6 })
1234567n.toLocaleString("ar-u-nu-arab", {
minimumSignificantDigits: 4,
maximumSignificantDigits: 6,
})
).toBe("\u0661\u066c\u0662\u0663\u0664\u066c\u0665\u0667\u0660");
expect(
1234561n.toLocaleString("ar", { minimumSignificantDigits: 4, maximumSignificantDigits: 6 })
1234561n.toLocaleString("ar-u-nu-arab", {
minimumSignificantDigits: 4,
maximumSignificantDigits: 6,
})
).toBe("\u0661\u066c\u0662\u0663\u0664\u066c\u0665\u0666\u0660");
});