Skip to content
This repository has been archived by the owner on Oct 15, 2020. It is now read-only.

Commit

Permalink
[Merge chakra-core/ChakraCore@f17e37db34] [MERGE #3680 @dilijev] Intl…
Browse files Browse the repository at this point in the history
…-ICU: Add LanguageTag RegExp; make Intl.*.supportedLocalesOf work under ICU

Merge pull request #3680 from dilijev:intl-icu-phase4

Resolves #2981: Intl.js: Add RegExp to high-level test for valid language tags (according to grammar in RFC 5646 Section 2.1)
Resolves #3652: Intl.js fallback: platform.getExtensions
Resolves #3653: Intl.js fallback: platform.resolveLocaleLookup
Resolves #3654: Intl.js fallback: platform.resolveLocaleBestFit
Resolves #3648: Intl-ICU: implement Intl.*.supportedLocalesOf
  • Loading branch information
chakrabot committed Sep 14, 2017
1 parent bda0580 commit a8c98f9
Show file tree
Hide file tree
Showing 6 changed files with 18,159 additions and 16,352 deletions.
219 changes: 172 additions & 47 deletions deps/chakrashim/core/lib/Runtime/Library/InJavascript/Intl.js

Large diffs are not rendered by default.

8,783 changes: 4,598 additions & 4,185 deletions deps/chakrashim/core/lib/Runtime/Library/InJavascript/Intl.js.bc.32b.h

Large diffs are not rendered by default.

8,782 changes: 4,598 additions & 4,184 deletions deps/chakrashim/core/lib/Runtime/Library/InJavascript/Intl.js.bc.64b.h

Large diffs are not rendered by default.

8,341 changes: 4,373 additions & 3,968 deletions deps/chakrashim/core/lib/Runtime/Library/InJavascript/Intl.js.nojit.bc.32b.h

Large diffs are not rendered by default.

8,340 changes: 4,373 additions & 3,967 deletions deps/chakrashim/core/lib/Runtime/Library/InJavascript/Intl.js.nojit.bc.64b.h

Large diffs are not rendered by default.

46 changes: 45 additions & 1 deletion deps/chakrashim/core/test/Intl/Basics.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,20 @@ function testRangeError(tag) {
}

function assertEachIsOneOf(actualList, expectedList, msg) {
if (actualList.length === 0) {
assert.fail("actual result list was empty");
}
for (a of actualList) {
assert.isTrue(expectedList.includes(a), msg);
}
}

let IntlNamespaces = [
Intl.Collator,
Intl.DateTimeFormat,
Intl.NumberFormat
]

// Tests of ECMA 402 Basic Functionality
// Minor motivation is to exercise internal operations implemented with WinGlob and ICU.
var tests = [
Expand All @@ -33,15 +42,50 @@ var tests = [
name: "#sec-canonicalizelanguagetag (C++ `NormalizeLanguageTag`)",
body: function () {
// * #sec-isstructurallyvalidlanguagetag: C++ `IsWellFormedLanguageTag`: input is well-formed
// * (implies C++ `IsWellFormedLanguageTag` returned true and thus didn't throw)
assert.areEqual(Intl.getCanonicalLocales(['en-us']), ['en-US']);
assert.areEqual(Intl.getCanonicalLocales(['de-de']), ['de-DE']);
assertEachIsOneOf(Intl.getCanonicalLocales(['ja-JP']), ['ja', 'ja-JP'], "Depending on WinGlob or ICU, one of these results");
assertEachIsOneOf(Intl.getCanonicalLocales(['zh-cn']), ['zh-CN', 'zh-Hans-CN'], "Depending on WinGlob or ICU, one of these results");

assertEachIsOneOf(
Intl.getCanonicalLocales(
[
'en-us', 'de-de', 'ja-JP', 'zh-cn'
]
),
[
'en-US',
'de-DE',
'ja', 'ja-JP',
'zh-CN', 'zh-Hans-CN',
]
);
}
},
{
name: "",
name: "supportedLocalesOf",
body: function () {
IntlNamespaces.forEach(function(ns) {
assertEachIsOneOf(ns.supportedLocalesOf(['en-us']), ['en', 'en-US']);
assertEachIsOneOf(ns.supportedLocalesOf(['de-de']), ['de', 'de-DE']);
assertEachIsOneOf(ns.supportedLocalesOf(['ja-JP']), ['ja', 'ja-JP']);
assertEachIsOneOf(ns.supportedLocalesOf(['zh-cn']), ['zh', 'zh-CN', 'zh-Hans-CN']);

assertEachIsOneOf(
ns.supportedLocalesOf(
[
'en-us', 'de-de', 'ja-JP', 'zh-cn'
]
),
[
'en', 'en-US',
'de', 'de-DE',
'ja', 'ja-JP',
'zh', 'zh-CN', 'zh-Hans-CN',
]
);
});
}
}
];
Expand Down

0 comments on commit a8c98f9

Please sign in to comment.