localeSelection.test.mjs 812 B

12345678910111213141516171819202122
  1. import assert from 'node:assert/strict'
  2. import test from 'node:test'
  3. import { selectBrowserLocale } from './localeSelection.js'
  4. const availableLocales = ['de-DE', 'en', 'es-ES', 'zh-Hans-CN', 'zh-Hant-TW']
  5. test('selectBrowserLocale prefers an exact locale match', () => {
  6. assert.equal(selectBrowserLocale(availableLocales, ['es-ES']), 'es-ES')
  7. })
  8. test('selectBrowserLocale falls back to a matching language', () => {
  9. assert.equal(selectBrowserLocale(availableLocales, ['de-AT']), 'de-DE')
  10. })
  11. test('selectBrowserLocale preserves script subtags during fallback', () => {
  12. assert.equal(selectBrowserLocale(availableLocales, ['zh-Hant-HK']), 'zh-Hant-TW')
  13. })
  14. test('selectBrowserLocale uses English when no locale matches', () => {
  15. assert.equal(selectBrowserLocale(availableLocales, ['fr-FR']), 'en')
  16. })