tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

testIntlAvailableLocales.cpp (2454B)


      1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
      2 * vim: set ts=8 sts=2 et sw=2 tw=80:
      3 */
      4 /* This Source Code Form is subject to the terms of the Mozilla Public
      5 * License, v. 2.0. If a copy of the MPL was not distributed with this
      6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      7 
      8 #include "js/LocaleSensitive.h"
      9 #include "jsapi-tests/tests.h"
     10 
     11 BEGIN_TEST(testIntlAvailableLocales) {
     12  JSRuntime* rt = JS_GetRuntime(cx);
     13 
     14  // This test should only attempt to run if we have Intl support.
     15  JS::Rooted<JS::Value> haveIntl(cx);
     16  EVAL("typeof Intl !== 'undefined'", &haveIntl);
     17  if (!haveIntl.toBoolean()) {
     18    return true;
     19  }
     20 
     21  // Assumption: our Intl support always includes "az" (Azerbaijani) support,
     22  // and our Intl support *does not* natively support az-Cyrl-AZ.
     23  CHECK(JS_SetDefaultLocale(rt, "az-Cyrl-AZ"));
     24 
     25  EXEC(
     26      "if (Intl.Collator().resolvedOptions().locale !== "
     27      "'az-Cyrl-AZ') \n"
     28      "    throw 'unexpected default locale';");
     29  EXEC(
     30      "var used = Intl.Collator('az-Cyrl').resolvedOptions().locale; \n"
     31      "if (used !== 'az-Cyrl') \n"
     32      "    throw 'bad locale when using truncated default: ' + used;");
     33  EXEC(
     34      "if (Intl.Collator('az').resolvedOptions().locale !== 'az') \n"
     35      "    throw 'bad locale when using more-truncated default';");
     36  EXEC(
     37      "if (Intl.Collator('az-Cyrl-US').resolvedOptions().locale !== 'az-Cyrl') "
     38      "\n"
     39      "    throw 'unexpected default locale';");
     40 
     41  EXEC(
     42      "if (Intl.Collator('az-Cyrl-AZ', { localeMatcher: 'lookup' "
     43      "}).resolvedOptions().locale !== \n"
     44      "    'az-Cyrl-AZ') \n"
     45      "{ \n"
     46      "    throw 'unexpected default locale with lookup matcher'; \n"
     47      "}");
     48 
     49  CHECK(JS_SetDefaultLocale(rt, "en-US-u-co-phonebk"));
     50  EXEC(
     51      "if (Intl.Collator().resolvedOptions().locale !== 'en-US') \n"
     52      "    throw 'unexpected default locale where proposed default included a "
     53      "Unicode extension';");
     54 
     55  CHECK(JS_SetDefaultLocale(rt, "this is not a language tag at all, yo"));
     56 
     57  EXEC(
     58      "if (Intl.Collator().resolvedOptions().locale !== 'en-GB') \n"
     59      "    throw 'unexpected last-ditch locale';");
     60  EXEC(
     61      "if (Intl.Collator('en-GB').resolvedOptions().locale !== 'en-GB') \n"
     62      "    throw 'unexpected used locale when specified, with last-ditch "
     63      "locale as default';");
     64 
     65  JS_ResetDefaultLocale(rt);
     66  return true;
     67 }
     68 END_TEST(testIntlAvailableLocales)