Source code
Revision control
Copy as Markdown
Other Tools
/* Any copyright is dedicated to the Public Domain.
// Test languages for which the root collation without
// script reordering is attested to be valid.
{
let locales = [
"de",
"en",
"fr",
"ga",
"id",
"it",
"lb",
"lij",
"ms",
"nl",
"pt",
"st",
"sw",
"xh",
"zu",
];
for (let locale of locales) {
let collator = new Intl.Collator(locale, { sensitivity: "base" });
assertEq(collator.resolvedOptions().locale, locale);
assertEq(collator.resolvedOptions().collation, "default");
assertEq(collator.compare("ae", "ä"), 1);
let eor = new Intl.Collator(locale, { collation: "eor", sensitivity: "base" });
assertEq(eor.resolvedOptions().locale, locale);
assertEq(eor.resolvedOptions().collation, "eor");
assertEq(eor.compare("ae", "ä"), 1);
let emoji = new Intl.Collator(locale, { collation: "emoji", sensitivity: "base" });
assertEq(emoji.resolvedOptions().locale, locale);
assertEq(emoji.resolvedOptions().collation, "emoji");
assertEq(emoji.compare("ae", "ä"), 1);
}
}
// Test some non-root Latin-script languages.
{
let locales = [
"fi",
"sv",
"da",
"no",
];
for (let locale of locales) {
let collator = new Intl.Collator(locale, { sensitivity: "base" });
assertEq(collator.resolvedOptions().locale, locale);
assertEq(collator.resolvedOptions().collation, "default");
assertEq(collator.compare("ae", "ä"), -1);
let eor = new Intl.Collator(locale, { collation: "eor", sensitivity: "base" });
assertEq(eor.resolvedOptions().locale, locale);
assertEq(eor.resolvedOptions().collation, "eor");
assertEq(eor.compare("ae", "ä"), 1); // eor overrides language
let emoji = new Intl.Collator(locale, { collation: "emoji", sensitivity: "base" });
assertEq(emoji.resolvedOptions().locale, locale);
assertEq(emoji.resolvedOptions().collation, "emoji");
assertEq(emoji.compare("ae", "ä"), 1); // emoji overrides language
}
}
if (typeof reportCompare === "function")
reportCompare(0, 0, "ok");