summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/intl402/Locale/constructor-options-region-valid.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/test262/intl402/Locale/constructor-options-region-valid.js')
-rw-r--r--js/src/tests/test262/intl402/Locale/constructor-options-region-valid.js69
1 files changed, 69 insertions, 0 deletions
diff --git a/js/src/tests/test262/intl402/Locale/constructor-options-region-valid.js b/js/src/tests/test262/intl402/Locale/constructor-options-region-valid.js
new file mode 100644
index 0000000000..f57fec2226
--- /dev/null
+++ b/js/src/tests/test262/intl402/Locale/constructor-options-region-valid.js
@@ -0,0 +1,69 @@
+// Copyright 2018 André Bargull; Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-intl.locale
+description: >
+ Checks error cases for the options argument to the Locale
+ constructor.
+info: |
+ Intl.Locale( tag [, options] )
+ 10. If options is undefined, then
+ 11. Else
+ a. Let options be ? ToObject(options).
+ 12. Set tag to ? ApplyOptionsToTag(tag, options).
+
+ ApplyOptionsToTag( tag, options )
+ ...
+ 7. Let region be ? GetOption(options, "region", "string", undefined, undefined).
+ ...
+ 9. If tag matches neither the privateuse nor the grandfathered production, then
+ ...
+ d. If region is not undefined, then
+ i. If tag does not contain a region production, then
+ 1. Set tag to the concatenation of the language production of tag, the substring corresponding to the "-" script production if present, "-", region, and the rest of tag.
+ ii. Else,
+ 1. Set tag to tag with the substring corresponding to the region production replaced by the string region.
+
+features: [Intl.Locale]
+---*/
+
+const validRegionOptions = [
+ [undefined, undefined],
+ ['FR', 'en-FR'],
+ ['554', 'en-NZ'],
+ [554, 'en-NZ'],
+];
+for (const [region, expected] of validRegionOptions) {
+ let options = { region };
+ let expect = expected || 'en';
+
+ assert.sameValue(
+ new Intl.Locale('en', options).toString(),
+ expect,
+ `new Intl.Locale('en', {region: "${region}"}).toString() returns "${expect}"`
+ );
+
+ expect = expected || 'en-US';
+ assert.sameValue(
+ new Intl.Locale('en-US', options).toString(),
+ expect,
+ `new Intl.Locale('en-US', {region: "${region}"}).toString() returns "${expect}"`
+ );
+
+ expect = (expected || 'en') + '-u-ca-gregory';
+ assert.sameValue(
+ new Intl.Locale('en-u-ca-gregory', options).toString(),
+ expect,
+ `new Intl.Locale('en-u-ca-gregory', {region: "${region}"}).toString() returns "${expect}"`
+ );
+
+ expect = (expected || 'en-US') + '-u-ca-gregory';
+ assert.sameValue(
+ new Intl.Locale('en-US-u-ca-gregory', options).toString(),
+ expect,
+ `new Intl.Locale('en-US-u-ca-gregory', {region: "${region}"}).toString() returns "${expect}"`
+ );
+}
+
+reportCompare(0, 0);