UNPKG

chrome-devtools-frontend

Version:
105 lines (87 loc) 4.01 kB
// Copyright 2021 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import * as i18n from './i18n.js'; describe('DevToolsLocale', () => { // For tests, we assume DevTools supports all locales we throw at it. // Finding the closes supported locale is implemented in the i18n lib and tested as part of that lib. const identity = (locale: string) => locale; after(() => { // Reset the singleton after the test suite for other tests. const data: i18n.DevToolsLocale.DevToolsLocaleData = { settingLanguage: 'en-US', navigatorLanguage: '', lookupClosestDevToolsLocale: identity, }; i18n.DevToolsLocale.DevToolsLocale.instance({create: true, data}); }); it('chooses navigator.language if setting is "browserLanguage"', () => { const data: i18n.DevToolsLocale.DevToolsLocaleData = { settingLanguage: 'browserLanguage', navigatorLanguage: 'en-GB', lookupClosestDevToolsLocale: identity, }; const devToolsLocale = i18n.DevToolsLocale.DevToolsLocale.instance({create: true, data}); assert.strictEqual(devToolsLocale.locale, 'en-GB'); }); it('chooses setting language if setting has any other value than "browserLanguage"', () => { const data: i18n.DevToolsLocale.DevToolsLocaleData = { settingLanguage: 'zh', navigatorLanguage: 'en-GB', lookupClosestDevToolsLocale: identity, }; const devToolsLocale = i18n.DevToolsLocale.DevToolsLocale.instance({create: true, data}); assert.strictEqual(devToolsLocale.locale, 'zh'); }); it('falls back to en-US should navigator.language be empty', () => { const data: i18n.DevToolsLocale.DevToolsLocaleData = { settingLanguage: 'browserLanguage', navigatorLanguage: '', lookupClosestDevToolsLocale: identity, }; const devToolsLocale = i18n.DevToolsLocale.DevToolsLocale.instance({create: true, data}); assert.strictEqual(devToolsLocale.locale, 'en-US'); }); it('chooses the closest supported language', () => { const data: i18n.DevToolsLocale.DevToolsLocaleData = { settingLanguage: 'zh-HK', navigatorLanguage: '', lookupClosestDevToolsLocale: () => 'zh', }; const devToolsLocale = i18n.DevToolsLocale.DevToolsLocale.instance({create: true, data}); assert.strictEqual(devToolsLocale.locale, 'zh'); }); describe('forceFallbackLocale', () => { it('sets locale to English', () => { const data: i18n.DevToolsLocale.DevToolsLocaleData = { settingLanguage: 'browserLanguage', navigatorLanguage: 'en-GB', lookupClosestDevToolsLocale: identity, }; const devToolsLocale = i18n.DevToolsLocale.DevToolsLocale.instance({create: true, data}); assert.strictEqual(devToolsLocale.locale, 'en-GB'); devToolsLocale.forceFallbackLocale(); assert.strictEqual(devToolsLocale.locale, 'en-US'); }); }); describe('languageIsSupportedByDevTools', () => { it('returns true if the locale is supported, false otherwise', () => { const data: i18n.DevToolsLocale.DevToolsLocaleData = { settingLanguage: 'zh-HK', navigatorLanguage: '', lookupClosestDevToolsLocale: () => 'zh', }; const devToolsLocale = i18n.DevToolsLocale.DevToolsLocale.instance({create: true, data}); assert.isTrue(devToolsLocale.languageIsSupportedByDevTools('zh-HK')); assert.isFalse(devToolsLocale.languageIsSupportedByDevTools('de-DE')); }); }); }); describe('localeLanguagesMatch', () => { it('returns true if the language part of a locale matches, false otherwise', () => { assert.isTrue(i18n.DevToolsLocale.localeLanguagesMatch('de-DE', 'de-AT')); assert.isTrue(i18n.DevToolsLocale.localeLanguagesMatch('de-DE', 'de')); assert.isFalse(i18n.DevToolsLocale.localeLanguagesMatch('de', 'en')); assert.isFalse(i18n.DevToolsLocale.localeLanguagesMatch('de-AT', 'en-US')); }); });