import assert from "node:assert/strict"; import test from "node:test"; import { getLocalePlugin, getSupportedLocales, registerLocale, resolveBrowserLocale, } from "./registry.ts"; test("uses the first supported browser language and falls back to English", () => { assert.equal(resolveBrowserLocale(["zh-CN", "en-US"]), "zh-CN"); assert.equal(resolveBrowserLocale(["zh", "en-US"]), "zh-CN"); assert.equal(resolveBrowserLocale(["en-US", "zh-CN"]), "en"); assert.equal(resolveBrowserLocale(["fr-FR", "zh-CN"]), "zh-CN"); assert.equal(resolveBrowserLocale(["fr-FR"]), "en"); assert.equal(resolveBrowserLocale([]), "en"); }); test("returns only registered locales", () => { assert.deepEqual(getSupportedLocales(), ["en", "zh-CN"]); assert.equal(getLocalePlugin("en").id, "en"); assert.equal(getLocalePlugin("missing"), undefined); }); test("allows a new locale plugin and rejects duplicate ids", () => { registerLocale({ id: "test", label: "Test", messages: { "common.ok": "OK" } }); assert.equal(getLocalePlugin("test")?.label, "Test"); assert.throws(() => registerLocale({ id: "test", label: "Again", messages: {} })); });