mirror of
https://github.com/fosrl/pangolin.git
synced 2026-08-28 23:15:10 +02:00
75 lines
2.0 KiB
TypeScript
75 lines
2.0 KiB
TypeScript
import { assertEquals } from "@test/assert";
|
|
import { detectLocale } from "./detectLocale";
|
|
|
|
function runTests() {
|
|
assertEquals(
|
|
detectLocale("zh-TW,zh;q=0.9,en-US;q=0.8,en;q=0.7,ja;q=0.6"),
|
|
"zh-TW",
|
|
"An exact regional match should take precedence over a language fallback"
|
|
);
|
|
assertEquals(
|
|
detectLocale("ZH-tw"),
|
|
"zh-TW",
|
|
"Locale matching should be case-insensitive"
|
|
);
|
|
assertEquals(
|
|
detectLocale(" zh-TW ; q=1 , zh-CN;q=0.8 "),
|
|
"zh-TW",
|
|
"Whitespace and quality parameters should not prevent an exact match"
|
|
);
|
|
assertEquals(
|
|
detectLocale("zh-CN,zh-TW;q=0.9"),
|
|
"zh-CN",
|
|
"Simplified Chinese should still match exactly"
|
|
);
|
|
assertEquals(
|
|
detectLocale("zh"),
|
|
"zh-CN",
|
|
"A generic Chinese preference should retain the existing fallback"
|
|
);
|
|
assertEquals(
|
|
detectLocale("en-GB,en;q=0.9"),
|
|
"en-US",
|
|
"An unsupported region should fall back to a supported locale for the language"
|
|
);
|
|
assertEquals(
|
|
detectLocale("ja-JP,zh-TW;q=0.9"),
|
|
"zh-TW",
|
|
"The next preference should be used when a language is unsupported"
|
|
);
|
|
assertEquals(
|
|
detectLocale("zh-CN;q=0.5,zh-TW;q=0.9"),
|
|
"zh-TW",
|
|
"Preferences should be evaluated by quality"
|
|
);
|
|
assertEquals(
|
|
detectLocale("zh-TW;q=0,fr-FR;q=0.8"),
|
|
"fr-FR",
|
|
"Locales with zero quality should be excluded"
|
|
);
|
|
assertEquals(
|
|
detectLocale("*,de-DE;q=0.8"),
|
|
"de-DE",
|
|
"A wildcard should not obscure a supported preference"
|
|
);
|
|
assertEquals(
|
|
detectLocale("ja-JP"),
|
|
undefined,
|
|
"An unsupported language should not match"
|
|
);
|
|
assertEquals(
|
|
detectLocale(""),
|
|
undefined,
|
|
"An empty Accept-Language header should not match"
|
|
);
|
|
|
|
console.log("All locale detection tests passed!");
|
|
}
|
|
|
|
try {
|
|
runTests();
|
|
} catch (error) {
|
|
console.error("Locale detection test failed:", error);
|
|
process.exit(1);
|
|
}
|