SupportedLocalesOf.js 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. WScript.LoadScriptFile("..\\UnitTestFramework\\UnitTestFramework.js");
  6. const ctors = [Intl.Collator, Intl.NumberFormat, Intl.DateTimeFormat];
  7. const tests = [
  8. {
  9. name: "supportedLocalesOf throws correct errors",
  10. body: function () {
  11. const rangeErrorMessage = "Option value 'incorrect' for 'localeMatcher' is outside of valid range. Expected: ['best fit', 'lookup']";
  12. const fakeLocales = { get length() { throw new Error("User-provided locale object throws"); } };
  13. function test(ctor) {
  14. assert.throws(() => new ctor.supportedLocalesOf(), TypeError, "", `Function 'Intl.${ctor.name}.supportedLocalesOf' is not a constructor`);
  15. assert.throws(() => ctor.supportedLocalesOf(["en-US"], { localeMatcher: "incorrect" }), RangeError, "", rangeErrorMessage);
  16. assert.throws(() => ctor.supportedLocalesOf(null), TypeError, "", "Object expected");
  17. assert.throws(() => ctor.supportedLocalesOf(fakeLocales), Error, "", "User-provided locale object throws");
  18. }
  19. ctors.forEach(test);
  20. }
  21. },
  22. {
  23. name: "supportedLocalesOf basic tests",
  24. body: function () {
  25. function test(ctor) {
  26. assert.areEqual(ctor.supportedLocalesOf(["en"]).toString(), "en");
  27. assert.areEqual(ctor.supportedLocalesOf(["en"], { localeMatcher: "lookup" }).toString(), "en-US");
  28. assert.areEqual(ctor.supportedLocalesOf(["en"], { localeMatcher: "best fit" }).toString(), "en");
  29. assert.areEqual(ctor.supportedLocalesOf().length, 0);
  30. assert.areEqual(ctor.supportedLocalesOf(undefined, { localeMatcher: "lookup" }).length, 0);
  31. assert.areEqual(ctor.supportedLocalesOf(undefined, { localeMatcher: "best fit" }).length, 0);
  32. assert.areEqual(ctor.supportedLocalesOf.call({}, ["en"]).toString(), "en");
  33. assert.areEqual(ctor.supportedLocalesOf.call({}, ["en"], { localeMatcher: "lookup" }).toString(), "en-US");
  34. assert.areEqual(ctor.supportedLocalesOf.call({}, ["en"], { localeMatcher: "best fit" }).toString(), "en");
  35. assert.areEqual(ctor.supportedLocalesOf.bind({})(["en"]).toString(), "en");
  36. assert.areEqual(ctor.supportedLocalesOf.bind({})(["en"], { localeMatcher: "lookup" }).toString(), "en-US");
  37. assert.areEqual(ctor.supportedLocalesOf.bind({})(["en"], { localeMatcher: "best fit" }).toString(), "en");
  38. }
  39. ctors.forEach(test);
  40. }
  41. }
  42. ];
  43. testRunner.runTests(tests, { verbose: WScript.Arguments[0] != "summary" });