From b8c591008f671c8675d46e60c39704d9098811a7 Mon Sep 17 00:00:00 2001 From: Norbert Lindenberg Date: Wed, 22 Aug 2012 17:53:26 -0700 Subject: Updated existing tests for June 2012 spec changes; removed LocaleList tests; fixed minor issues. - Removed LocaleList tests; updated other tests so they don't depend on LocaleList. - Updated tests so they no longer assume that the prototype object of a constructor is an instance of that constructor. - Updated tests so that jshint is happy. - Removed @path attributes from test files; updated comment in packager.py explaining why they're unnecessary. - Removed "use strict" statements, which interfere with strict/non-strict testing. - Removed testcase functions, which are unnecessary. --- test/suite/intl402/ch01/1.2/1.2-1_1.js | 28 --------------- test/suite/intl402/ch08/8.0/8.0.js | 56 ++++++++++++------------------ test/suite/intl402/ch08/8.1/8.1.js | 37 ++++++-------------- test/suite/intl402/ch09/9.1/9.1.1_1.js | 23 ------------ test/suite/intl402/ch09/9.1/9.1.1_2_1.js | 23 ------------ test/suite/intl402/ch09/9.1/9.1.1_2_2.js | 23 ------------ test/suite/intl402/ch09/9.1/9.1.1_2_3.js | 23 ------------ test/suite/intl402/ch09/9.1/9.1.1_2_4.js | 30 ---------------- test/suite/intl402/ch09/9.1/9.1.1_2_5.js | 28 --------------- test/suite/intl402/ch09/9.1/9.1.2.js | 30 ---------------- test/suite/intl402/ch09/9.1/9.1.3.js | 30 ---------------- test/suite/intl402/ch11/11.2/11.2.1.js | 27 ++++++-------- test/suite/intl402/ch11/11.2/11.2.2.js | 33 +++++++----------- test/suite/intl402/ch11/11.2/11.2.3.js | 23 +++++------- test/suite/intl402/ch11/11.2/11.2.js | 15 +++----- test/suite/intl402/ch11/11.3/11.3.1.js | 11 ++---- test/suite/intl402/ch11/11.3/11.3.js | 21 +++++------ test/suite/intl402/ch12/12.2/12.2.1.js | 27 ++++++-------- test/suite/intl402/ch12/12.2/12.2.2.js | 33 +++++++----------- test/suite/intl402/ch12/12.2/12.2.3.js | 25 +++++-------- test/suite/intl402/ch12/12.2/12.2.js | 15 +++----- test/suite/intl402/ch12/12.3/12.3.1.js | 15 +++----- test/suite/intl402/ch12/12.3/12.3.2_2.js | 25 +++++-------- test/suite/intl402/ch12/12.3/12.3.2_3.js | 17 +++------ test/suite/intl402/ch12/12.3/12.3.2_4.js | 51 ++++++++++++--------------- test/suite/intl402/ch12/12.3/12.3.2_5_b.js | 29 ++++++---------- test/suite/intl402/ch12/12.3/12.3.2_5_e.js | 25 +++++-------- test/suite/intl402/ch12/12.3/12.3.js | 21 +++++------ test/suite/intl402/ch13/13.2/13.2.1.js | 27 ++++++-------- test/suite/intl402/ch13/13.2/13.2.2.js | 33 +++++++----------- test/suite/intl402/ch13/13.2/13.2.3.js | 25 +++++-------- test/suite/intl402/ch13/13.2/13.2.js | 15 +++----- test/suite/intl402/ch13/13.3/13.3.1.js | 15 +++----- test/suite/intl402/ch13/13.3/13.3.js | 21 +++++------ tools/packaging/packager.py | 3 +- website/json/intl402.json | 2 +- website/json/testcases_intl402.json | 2 +- 37 files changed, 235 insertions(+), 652 deletions(-) delete mode 100644 test/suite/intl402/ch01/1.2/1.2-1_1.js delete mode 100644 test/suite/intl402/ch09/9.1/9.1.1_1.js delete mode 100644 test/suite/intl402/ch09/9.1/9.1.1_2_1.js delete mode 100644 test/suite/intl402/ch09/9.1/9.1.1_2_2.js delete mode 100644 test/suite/intl402/ch09/9.1/9.1.1_2_3.js delete mode 100644 test/suite/intl402/ch09/9.1/9.1.1_2_4.js delete mode 100644 test/suite/intl402/ch09/9.1/9.1.1_2_5.js delete mode 100644 test/suite/intl402/ch09/9.1/9.1.2.js delete mode 100644 test/suite/intl402/ch09/9.1/9.1.3.js diff --git a/test/suite/intl402/ch01/1.2/1.2-1_1.js b/test/suite/intl402/ch01/1.2/1.2-1_1.js deleted file mode 100644 index fa94298cf..000000000 --- a/test/suite/intl402/ch01/1.2/1.2-1_1.js +++ /dev/null @@ -1,28 +0,0 @@ -/// Copyright (c) 2012 Ecma International. All rights reserved. -/// Ecma International makes this code available under the terms and conditions set -/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the -/// "Use Terms"). Any redistribution of this code must retain the above -/// copyright and this notice and otherwise comply with the Use Terms. - -/** - * @path intl402/ch01/1.2/1.2-1_1.js - * @description This is an example showing how to create Ecma standard 402 tests alongside test262 tests. Should be removed once the 402 effort gets underway - */ - -//The first test case for a hypothetical Step 1 of section 1.2 in the Ecma -//standard 402. Yay! - -function testcase() { - "use strict"; - - //whether the test case passed or failed - var passed = false; - - //Here is where you'd actually test Step 1 of section 1.2 of the - //hypothetical standard. If the test passed against an - //implementation, you'd set passed to 'true'. - passed = true; - - return passed; -} -runTestCase(testcase); diff --git a/test/suite/intl402/ch08/8.0/8.0.js b/test/suite/intl402/ch08/8.0/8.0.js index 5f68283e5..e35db5dff 100644 --- a/test/suite/intl402/ch08/8.0/8.0.js +++ b/test/suite/intl402/ch08/8.0/8.0.js @@ -2,48 +2,38 @@ // This code is governed by the BSD license found in the LICENSE file. /** - * @path intl402/ch08/8.0/8.0.js * @description Tests properties of Intl object. */ -function testcase() { - "use strict"; - - var passed = false; - - // We keep Intl extensible and not frozen. - if (Object.isFrozen(Intl) === true) { - $ERROR('isFrozen(Intl) returns true.') - } +// We keep Intl extensible and not frozen. +if (Object.isFrozen(Intl) === true) { + $ERROR('isFrozen(Intl) returns true.'); +} - if (Object.isExtensible(Intl) === false) { - $ERROR('isExtensible(Intl) returns false.') - } +if (Object.isExtensible(Intl) === false) { + $ERROR('isExtensible(Intl) returns false.'); +} - var falsey = undefined; +var falsey; - // Intl can't be constructed. - try { +// Intl can't be constructed. +try { falsey = new Intl(); - } catch (e) { - } +} catch (e) { +} - if (!!falsey) { - $ERROR('Intl object should not be constructable.') - } +if (!!falsey) { + $ERROR('Intl object should not be constructable.'); +} - // Intl can't be called as a function. - try { +// Intl can't be called as a function. +try { + /*jshint newcap:false*/ falsey = Intl(); - } catch (e) { - } - - if (!!falsey) { - $ERROR('Intl should not be callable.') - } +} catch (e) { +} - passed = true; - - return passed; +if (!!falsey) { + $ERROR('Intl should not be callable.'); } -runTestCase(testcase); \ No newline at end of file + diff --git a/test/suite/intl402/ch08/8.1/8.1.js b/test/suite/intl402/ch08/8.1/8.1.js index 570f4e1fe..f9ee77111 100644 --- a/test/suite/intl402/ch08/8.1/8.1.js +++ b/test/suite/intl402/ch08/8.1/8.1.js @@ -2,37 +2,22 @@ // This code is governed by the BSD license found in the LICENSE file. /** - * @path intl402/ch08/8.1/8.1.js * @description Tests that Intl object has proper constructors. */ -function testcase() { - "use strict"; - - var passed = false; - - if (Intl === undefined) { +if (Intl === undefined) { $ERROR('Intl object is undefined.'); - } - - if (typeof Intl.LocaleList !== 'function') { - $ERROR('Intl.LocaleList is not a function.') - } - - if (typeof Intl.Collator !== 'function') { - $ERROR('Intl.Collator is not a function.') - } +} - if (typeof Intl.NumberFormat !== 'function') { - $ERROR('Intl.NumberFormat is not a function.') - } +if (typeof Intl.Collator !== 'function') { + $ERROR('Intl.Collator is not a function.'); +} - if (typeof Intl.DateTimeFormat !== 'function') { - $ERROR('Intl.DateTimeFormat is not a function.') - } +if (typeof Intl.NumberFormat !== 'function') { + $ERROR('Intl.NumberFormat is not a function.'); +} - passed = true; - - return passed; +if (typeof Intl.DateTimeFormat !== 'function') { + $ERROR('Intl.DateTimeFormat is not a function.'); } -runTestCase(testcase); \ No newline at end of file + diff --git a/test/suite/intl402/ch09/9.1/9.1.1_1.js b/test/suite/intl402/ch09/9.1/9.1.1_1.js deleted file mode 100644 index 281e6f062..000000000 --- a/test/suite/intl402/ch09/9.1/9.1.1_1.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2012 Google Inc. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/** - * @path intl402/ch09/9.1/9.1.1_1.js - * @description Tests initialization of LocaleList object with no parameters. - */ - -function testcase() { - "use strict"; - - var passed = false; - - var list = new Intl.LocaleList(); - if (list.length !== 1) { - $ERROR('LocaleList constructed with no arguments should have 1 element.'); - } - - passed = true; - - return passed; -} -runTestCase(testcase); \ No newline at end of file diff --git a/test/suite/intl402/ch09/9.1/9.1.1_2_1.js b/test/suite/intl402/ch09/9.1/9.1.1_2_1.js deleted file mode 100644 index f96aa7735..000000000 --- a/test/suite/intl402/ch09/9.1/9.1.1_2_1.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2012 Google Inc. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/** - * @path intl402/ch09/9.1/9.1.1_2_1.js - * @description Tests initialization of LocaleList object with an empty list. - */ - -function testcase() { - "use strict"; - - var passed = false; - - var list = new Intl.LocaleList([]); - if (list.length !== 0) { - $ERROR('LocaleList constructed with empty list should have 0 elements.'); - } - - passed = true; - - return passed; -} -runTestCase(testcase); \ No newline at end of file diff --git a/test/suite/intl402/ch09/9.1/9.1.1_2_2.js b/test/suite/intl402/ch09/9.1/9.1.1_2_2.js deleted file mode 100644 index c5d6655c8..000000000 --- a/test/suite/intl402/ch09/9.1/9.1.1_2_2.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2012 Google Inc. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/** - * @path intl402/ch09/9.1/9.1.1_2_2.js - * @description Tests initialization of LocaleList object with duplicate language IDs. - */ - -function testcase() { - "use strict"; - - var passed = false; - - var list = new Intl.LocaleList(['sr-rs', 'sr-rs']); - if (list.length !== 1) { - $ERROR('Duplicates should be removed from the list.'); - } - - passed = true; - - return passed; -} -runTestCase(testcase); \ No newline at end of file diff --git a/test/suite/intl402/ch09/9.1/9.1.1_2_3.js b/test/suite/intl402/ch09/9.1/9.1.1_2_3.js deleted file mode 100644 index 6932ebb73..000000000 --- a/test/suite/intl402/ch09/9.1/9.1.1_2_3.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2012 Google Inc. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/** - * @path intl402/ch09/9.1/9.1.1_2_3.js - * @description Tests that language ID gets canonicalized in LocaleList. - */ - -function testcase() { - "use strict"; - - var passed = false; - - var list = new Intl.LocaleList(['SR-CYRL-rS']); - if (list[0] !== 'sr-Cyrl-RS') { - $ERROR('Locale ' + list[0] + ' was not properly canonicalized.'); - } - - passed = true; - - return passed; -} -runTestCase(testcase); \ No newline at end of file diff --git a/test/suite/intl402/ch09/9.1/9.1.1_2_4.js b/test/suite/intl402/ch09/9.1/9.1.1_2_4.js deleted file mode 100644 index a8d7a870a..000000000 --- a/test/suite/intl402/ch09/9.1/9.1.1_2_4.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2012 Google Inc. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/** - * @path intl402/ch09/9.1/9.1.1_2_4.js - * @description Tests initialization of LocaleList object with non-string parameters. - */ - -function testcase() { - "use strict"; - - var passed = false; - - var list = undefined; - try { - list = new Intl.LocaleList([5]); - } catch(e) { - if (!(e instanceof TypeError)) { - $ERROR('LocaleList should throw TypeError exception for non-string argument.'); - } - } - if (list !== undefined) { - $ERROR('LocaleList should throw TypeError exception for non-string argument.'); - } - - passed = true; - - return passed; -} -runTestCase(testcase); \ No newline at end of file diff --git a/test/suite/intl402/ch09/9.1/9.1.1_2_5.js b/test/suite/intl402/ch09/9.1/9.1.1_2_5.js deleted file mode 100644 index b09a57983..000000000 --- a/test/suite/intl402/ch09/9.1/9.1.1_2_5.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2012 Google Inc. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/** - * @path intl402/ch09/9.1/9.1.1_2_5.js - * @description Tests initialization of LocaleList object with invalid locale IDs. - */ - -function testcase() { - "use strict"; - - var passed = false; - - var list = undefined; - try { - list = new Intl.LocaleList(['']); - } catch(e) { - // Throws invalid language tag exception. - } - if (list !== undefined) { - $ERROR('Empty string should be an invalid locale identifier.'); - } - - passed = true; - - return passed; -} -runTestCase(testcase); \ No newline at end of file diff --git a/test/suite/intl402/ch09/9.1/9.1.2.js b/test/suite/intl402/ch09/9.1/9.1.2.js deleted file mode 100644 index 7be1ec312..000000000 --- a/test/suite/intl402/ch09/9.1/9.1.2.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2012 Google Inc. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/** - * @path intl402/ch09/9.1/9.1.2.js - * @description Tests Intl.LocaleList as a function. - */ - -function testcase() { - "use strict"; - - var passed = false; - - var list = Intl.LocaleList(); - - if (list.length !== 1) { - $ERROR('LocaleList constructed with no arguments should have 1 element.'); - } - - // Using new Intl.LocaleList and calling Intl.LocaleList should produce the - // same result. - if (new Intl.LocaleList()[0] !== list[0]) { - $ERROR('Intl.LocaleList()[0] should be equal to new Intl.LocaleList()[0]'); - } - - passed = true; - - return passed; -} -runTestCase(testcase); \ No newline at end of file diff --git a/test/suite/intl402/ch09/9.1/9.1.3.js b/test/suite/intl402/ch09/9.1/9.1.3.js deleted file mode 100644 index d1bb7e081..000000000 --- a/test/suite/intl402/ch09/9.1/9.1.3.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2012 Google Inc. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/** - * @path intl402/ch09/9.1/9.1.3.js - * @description Tests Intl.LocaleList as a constructor. - */ - -function testcase() { - "use strict"; - - var passed = false; - - var list = new Intl.LocaleList(); - - if (list.length !== 1) { - $ERROR('LocaleList constructed with no arguments should have 1 element.'); - } - - // Using new Intl.LocaleList and calling Intl.LocaleList should produce the - // same result. - if (Intl.LocaleList()[0] !== list[0]) { - $ERROR('Intl.LocaleList()[0] should be equal to new Intl.LocaleList()[0]'); - } - - passed = true; - - return passed; -} -runTestCase(testcase); \ No newline at end of file diff --git a/test/suite/intl402/ch11/11.2/11.2.1.js b/test/suite/intl402/ch11/11.2/11.2.1.js index e5ceb08fc..6583bed08 100644 --- a/test/suite/intl402/ch11/11.2/11.2.1.js +++ b/test/suite/intl402/ch11/11.2/11.2.1.js @@ -2,31 +2,24 @@ // This code is governed by the BSD license found in the LICENSE file. /** - * @path intl402/ch11/11.2/11.2.1.js * @description Tests that the Intl.Collator prototype object exists and * is not writable, enumerable, or configurable. */ -var testcase = function() { - "use strict"; +var desc; - var desc; - - if (!Intl.Collator.hasOwnProperty('prototype')) { +if (!Intl.Collator.hasOwnProperty('prototype')) { $ERROR('Intl.Collator has no prototype property'); - } +} - desc = Object.getOwnPropertyDescriptor(Intl.Collator, 'prototype'); - if (desc.writable === true) { +desc = Object.getOwnPropertyDescriptor(Intl.Collator, 'prototype'); +if (desc.writable === true) { $ERROR('Intl.Collator.prototype is writable.'); - } - if (desc.enumerable === true) { +} +if (desc.enumerable === true) { $ERROR('Intl.Collator.prototype is enumerable.'); - } - if (desc.configurable === true) { +} +if (desc.configurable === true) { $ERROR('Intl.Collator.prototype is configurable.'); - } - - return true; } -runTestCase(testcase); + diff --git a/test/suite/intl402/ch11/11.2/11.2.2.js b/test/suite/intl402/ch11/11.2/11.2.2.js index 9d136f77e..5cf953ce8 100644 --- a/test/suite/intl402/ch11/11.2/11.2.2.js +++ b/test/suite/intl402/ch11/11.2/11.2.2.js @@ -2,33 +2,26 @@ // This code is governed by the BSD license found in the LICENSE file. /** - * @path intl402/ch11/11.2/11.2.2.js - * @description Tests that the Intl.Collator has a supportedLocalesOf + * @description Tests that Intl.Collator has a supportedLocalesOf * property, and it works as planned. */ -var testcase = function() { - "use strict"; +var defaultLocale = new Intl.Collator().resolvedOptions().locale; +var notSupported = 'zxx'; // "no linguistic content" +var requestedLocales = [defaultLocale, notSupported]; - var supported = (new Intl.LocaleList())[0]; - var notSupported = 'zxx'; - var requestedLocales = [supported, notSupported]; +var supportedLocales; - var supportedLocales; - - if (!Intl.Collator.hasOwnProperty('supportedLocalesOf')) { +if (!Intl.Collator.hasOwnProperty('supportedLocalesOf')) { $ERROR("Intl.Collator doesn't have a supportedLocalesOf property."); - } +} - supportedLocales = Intl.Collator.supportedLocalesOf(requestedLocales); - if (supportedLocales.length !== 1) { +supportedLocales = Intl.Collator.supportedLocalesOf(requestedLocales); +if (supportedLocales.length !== 1) { $ERROR('The length of supported locales list is not 1.'); - } - - if (supportedLocales[0] !== supported) { - $ERROR('The supported locale is not returned in the supported list.'); - } +} - return true; +if (supportedLocales[0] !== defaultLocale) { + $ERROR('The default locale is not returned in the supported list.'); } -runTestCase(testcase); + diff --git a/test/suite/intl402/ch11/11.2/11.2.3.js b/test/suite/intl402/ch11/11.2/11.2.3.js index 98ee05b9b..c281491a0 100644 --- a/test/suite/intl402/ch11/11.2/11.2.3.js +++ b/test/suite/intl402/ch11/11.2/11.2.3.js @@ -2,24 +2,17 @@ // This code is governed by the BSD license found in the LICENSE file. /** - * @path intl402/ch11/11.2/11.2.3.js - * @description Tests the internal properties of Intl.NumberFormat + * @description Tests the internal properties of Intl.Collator. */ -var testcase = function() { - "use strict"; +var defaultLocale = new Intl.Collator([]).resolvedOptions().locale; +var supportedLocales = Intl.Collator.supportedLocalesOf([defaultLocale]); - var defaultLocale = (new Intl.LocaleList())[0]; - var supportedLocales = Intl.Collator.supportedLocalesOf([defaultLocale]); - - if (supportedLocales.length < 1 || supportedLocales[0] != defaultLocale) { - $ERROR('The default Locale is not supported by Intl.Collator'); - } +if (supportedLocales.length < 1 || supportedLocales[0] !== defaultLocale) { + $ERROR('The default locale is not supported by Intl.Collator'); +} - // FIXME: Find a way to check that [[relevantExtensionKeys]] === ['nu'] +// FIXME: Find a way to check [[relevantExtensionKeys]] - // FIXME: Find a way to check specified properties of [[localeData]] +// FIXME: Find a way to check specified properties of [[localeData]] - return true; -} -runTestCase(testcase); diff --git a/test/suite/intl402/ch11/11.2/11.2.js b/test/suite/intl402/ch11/11.2/11.2.js index a79f75af3..2a9c073e9 100644 --- a/test/suite/intl402/ch11/11.2/11.2.js +++ b/test/suite/intl402/ch11/11.2/11.2.js @@ -2,22 +2,15 @@ // This code is governed by the BSD license found in the LICENSE file. /** - * @path intl402/ch11/11.2/11.2.js * @description Tests that the Intl.Collator constructor has a length * property that equals 2. */ -var testcase = function() { - "use strict"; - - if (!Intl.Collator.hasOwnProperty('length')) { +if (!Intl.Collator.hasOwnProperty('length')) { $ERROR('Intl.Collator has no length property'); - } +} - if (Intl.Collator.length != 2) { +if (Intl.Collator.length != 2) { $ERROR('Intl.Collator.length is not 2.'); - } - - return true; } -runTestCase(testcase); + diff --git a/test/suite/intl402/ch11/11.3/11.3.1.js b/test/suite/intl402/ch11/11.3/11.3.1.js index 2ca03c726..699949e18 100644 --- a/test/suite/intl402/ch11/11.3/11.3.1.js +++ b/test/suite/intl402/ch11/11.3/11.3.1.js @@ -2,19 +2,12 @@ // This code is governed by the BSD license found in the LICENSE file. /** - * @path intl402/ch11/11.3/11.3.1.js * @description Tests that Intl.Collator.prototype.constructor is the * Intl.Collator. */ -var testcase = function() { - "use strict"; - - if (Intl.Collator.prototype.constructor !== Intl.Collator) { +if (Intl.Collator.prototype.constructor !== Intl.Collator) { $ERROR("Intl.Collator.prototype.constructor is not the same as " + "Intl.Collator"); - } - - return true; } -runTestCase(testcase); + diff --git a/test/suite/intl402/ch11/11.3/11.3.js b/test/suite/intl402/ch11/11.3/11.3.js index 9ea63b92b..aa2e52845 100644 --- a/test/suite/intl402/ch11/11.3/11.3.js +++ b/test/suite/intl402/ch11/11.3/11.3.js @@ -2,19 +2,14 @@ // This code is governed by the BSD license found in the LICENSE file. /** - * @path intl402/ch11/11.3/11.3.js - * @description Tests that Intl.Collator.prototype is an intance of - * Intl.Collator. + * @description Tests that Intl.Collator.prototype is an object that + * has been initialized as an Intl.Collator. */ -var testcase = function() { - "use strict"; - - if (!(Intl.Collator.prototype instanceof Intl.Collator)) { - $ERROR("Intl.Collator's prototype is not an instance of " + - "Intl.Collator"); - } - - return true; +// test by calling a function that would fail if "this" were not an object +// initialized as an Intl.Collator +if (Intl.Collator.prototype.compare("aаあ아", "aаあ아") !== 0) { + $ERROR("Intl.Collator.prototype is not an object that has been " + + "initialized as an Intl.Collator."); } -runTestCase(testcase); + diff --git a/test/suite/intl402/ch12/12.2/12.2.1.js b/test/suite/intl402/ch12/12.2/12.2.1.js index f4bf51811..0ff91067a 100644 --- a/test/suite/intl402/ch12/12.2/12.2.1.js +++ b/test/suite/intl402/ch12/12.2/12.2.1.js @@ -2,32 +2,25 @@ // This code is governed by the BSD license found in the LICENSE file. /** - * @path intl402/ch12/12.2/12.2.1.js * @description Tests that the Intl.NumberFormat prototype object exists and * is not writable, enumerable, or configurable. * @author: Roozbeh Pournader */ -var testcase = function() { - "use strict"; +var desc; - var desc; - - if (!Intl.NumberFormat.hasOwnProperty('prototype')) { +if (!Intl.NumberFormat.hasOwnProperty('prototype')) { $ERROR('Intl.NumberFormat has no prototype property'); - } +} - desc = Object.getOwnPropertyDescriptor(Intl.NumberFormat, 'prototype'); - if (desc.writable === true) { +desc = Object.getOwnPropertyDescriptor(Intl.NumberFormat, 'prototype'); +if (desc.writable === true) { $ERROR('Intl.NumberFormat.prototype is writable.'); - } - if (desc.enumerable === true) { +} +if (desc.enumerable === true) { $ERROR('Intl.NumberFormat.prototype is enumerable.'); - } - if (desc.configurable === true) { +} +if (desc.configurable === true) { $ERROR('Intl.NumberFormat.prototype is configurable.'); - } - - return true; } -runTestCase(testcase); + diff --git a/test/suite/intl402/ch12/12.2/12.2.2.js b/test/suite/intl402/ch12/12.2/12.2.2.js index d16ecdceb..c6c9f9a46 100644 --- a/test/suite/intl402/ch12/12.2/12.2.2.js +++ b/test/suite/intl402/ch12/12.2/12.2.2.js @@ -2,34 +2,27 @@ // This code is governed by the BSD license found in the LICENSE file. /** - * @path intl402/ch12/12.2/12.2.2.js - * @description Tests that the Intl.NumberFormat has a supportedLocalesOf + * @description Tests that Intl.NumberFormat has a supportedLocalesOf * property, and it works as planned. * @author: Roozbeh Pournader */ -var testcase = function() { - "use strict"; - - var supported = (new Intl.LocaleList())[0]; - var notSupported = 'zxx'; - var requestedLocales = [supported, notSupported]; +var defaultLocale = new Intl.NumberFormat().resolvedOptions().locale; +var notSupported = 'zxx'; // "no linguistic content" +var requestedLocales = [defaultLocale, notSupported]; - var supportedLocales; +var supportedLocales; - if (!Intl.NumberFormat.hasOwnProperty('supportedLocalesOf')) { +if (!Intl.NumberFormat.hasOwnProperty('supportedLocalesOf')) { $ERROR("Intl.NumberFormat doesn't have a supportedLocalesOf property."); - } +} - supportedLocales = Intl.NumberFormat.supportedLocalesOf(requestedLocales); - if (supportedLocales.length !== 1) { +supportedLocales = Intl.NumberFormat.supportedLocalesOf(requestedLocales); +if (supportedLocales.length !== 1) { $ERROR('The length of supported locales list is not 1.'); - } - - if (supportedLocales[0] !== supported) { - $ERROR('The supported locale is not returned in the supported list.'); - } +} - return true; +if (supportedLocales[0] !== defaultLocale) { + $ERROR('The default locale is not returned in the supported list.'); } -runTestCase(testcase); + diff --git a/test/suite/intl402/ch12/12.2/12.2.3.js b/test/suite/intl402/ch12/12.2/12.2.3.js index 743353c52..b0f30e495 100644 --- a/test/suite/intl402/ch12/12.2/12.2.3.js +++ b/test/suite/intl402/ch12/12.2/12.2.3.js @@ -2,25 +2,18 @@ // This code is governed by the BSD license found in the LICENSE file. /** - * @path intl402/ch12/12.2/12.2.3.js - * @description Tests the internal properties of Intl.NumberFormat + * @description Tests the internal properties of Intl.NumberFormat. * @author: Roozbeh Pournader */ -var testcase = function() { - "use strict"; - - var defaultLocale = (new Intl.LocaleList())[0]; - var supportedLocales = Intl.NumberFormat.supportedLocalesOf([defaultLocale]); +var defaultLocale = new Intl.NumberFormat([]).resolvedOptions().locale; +var supportedLocales = Intl.NumberFormat.supportedLocalesOf([defaultLocale]); - if (supportedLocales.length < 1 || supportedLocales[0] != defaultLocale) { - $ERROR('The default Locale is not supported by Intl.NumberFormat'); - } +if (supportedLocales.length < 1 || supportedLocales[0] !== defaultLocale) { + $ERROR('The default locale is not supported by Intl.NumberFormat'); +} - // FIXME: Find a way to check that [[relevantExtensionKeys]] === ['nu'] - - // FIXME: Find a way to check specified properties of [[localeData]] +// FIXME: Find a way to check that [[relevantExtensionKeys]] === ['nu'] - return true; -} -runTestCase(testcase); +// FIXME: Find a way to check specified properties of [[localeData]] + diff --git a/test/suite/intl402/ch12/12.2/12.2.js b/test/suite/intl402/ch12/12.2/12.2.js index 92c40c656..8094d3bd1 100644 --- a/test/suite/intl402/ch12/12.2/12.2.js +++ b/test/suite/intl402/ch12/12.2/12.2.js @@ -2,23 +2,16 @@ // This code is governed by the BSD license found in the LICENSE file. /** - * @path intl402/ch12/12.2/12.2.js * @description Tests that the Intl.NumberFormat constructor has a length * property that equals 2. * @author: Roozbeh Pournader */ -var testcase = function() { - "use strict"; - - if (!Intl.NumberFormat.hasOwnProperty('length')) { +if (!Intl.NumberFormat.hasOwnProperty('length')) { $ERROR('Intl.NumberFormat has no length property'); - } +} - if (Intl.NumberFormat.length != 2) { +if (Intl.NumberFormat.length != 2) { $ERROR('Intl.NumberFormat.length is not 2.'); - } - - return true; } -runTestCase(testcase); + diff --git a/test/suite/intl402/ch12/12.3/12.3.1.js b/test/suite/intl402/ch12/12.3/12.3.1.js index a00c2df53..46c7fc519 100644 --- a/test/suite/intl402/ch12/12.3/12.3.1.js +++ b/test/suite/intl402/ch12/12.3/12.3.1.js @@ -2,20 +2,13 @@ // This code is governed by the BSD license found in the LICENSE file. /** - * @path intl402/ch12/12.3/12.3.1.js * @description Tests that Intl.NumberFormat.prototype.constructor is the * Intl.NumberFormat. * @author: Roozbeh Pournader */ -var testcase = function() { - "use strict"; - - if (Intl.NumberFormat.prototype.constructor !== Intl.NumberFormat) { - $ERROR("Intl.NumberFormat.prototype.constructor is not the same as " - +"Intl.NumberFormat"); - } - - return true; +if (Intl.NumberFormat.prototype.constructor !== Intl.NumberFormat) { + $ERROR("Intl.NumberFormat.prototype.constructor is not the same as " + + "Intl.NumberFormat"); } -runTestCase(testcase); + diff --git a/test/suite/intl402/ch12/12.3/12.3.2_2.js b/test/suite/intl402/ch12/12.3/12.3.2_2.js index 09fafe15d..bcf4cffff 100644 --- a/test/suite/intl402/ch12/12.3/12.3.2_2.js +++ b/test/suite/intl402/ch12/12.3/12.3.2_2.js @@ -2,33 +2,26 @@ // This code is governed by the BSD license found in the LICENSE file. /** - * @path intl402/ch12/12.3/12.3.2_2.js * @description Tests that Intl.NumberFormat.prototype.format * converts other types to numbers. * @author: Roozbeh Pournader */ -var testcase = function() { - "use strict"; +var formatter = new Intl.NumberFormat(); +var testData = [undefined, null, true, '0.6666666']; +var number; +var i, input, correctResult, result; - var formatter = new Intl.NumberFormat(); - var testData = [undefined, null, true, '0.6666666']; - var number; - var i, input, correctResult, result; - - for (i in testData) { +for (i in testData) { input = testData[i]; number = +input; correctResult = formatter.format(number); result = formatter.format(input); if (result !== correctResult) { - $ERROR('Intl.NumberFormat does not convert other ' + - 'types to numbers. Input: "'+input+'" Output: "'+result+'" '+ - 'Expected output: "'+correctResult+'"'); + $ERROR('Intl.NumberFormat does not convert other ' + + 'types to numbers. Input: "'+input+'" Output: "'+result+'" '+ + 'Expected output: "'+correctResult+'"'); } - } - - return true; } -runTestCase(testcase); + diff --git a/test/suite/intl402/ch12/12.3/12.3.2_3.js b/test/suite/intl402/ch12/12.3/12.3.2_3.js index 21fc256fe..5f14e7772 100644 --- a/test/suite/intl402/ch12/12.3/12.3.2_3.js +++ b/test/suite/intl402/ch12/12.3/12.3.2_3.js @@ -2,25 +2,18 @@ // This code is governed by the BSD license found in the LICENSE file. /** - * @path intl402/ch12/12.3/12.3.2_3.js * @description Tests that Intl.NumberFormat.prototype.format * doesn't treat all numbers as negative. * @author: Roozbeh Pournader */ -var testcase = function() { - "use strict"; - - var formatter = new Intl.NumberFormat(); +var formatter = new Intl.NumberFormat(); - if (formatter.format(1) === formatter.format(-1)) { +if (formatter.format(1) === formatter.format(-1)) { $ERROR('Intl.NumberFormat is formatting 1 and -1 the same way.'); - } +} - if (formatter.format(-0) !== formatter.format(0)) { +if (formatter.format(-0) !== formatter.format(0)) { $ERROR('Intl.NumberFormat is formatting signed zeros differently.'); - } - - return true; } -runTestCase(testcase); + diff --git a/test/suite/intl402/ch12/12.3/12.3.2_4.js b/test/suite/intl402/ch12/12.3/12.3.2_4.js index c3dae9600..ec11a679d 100644 --- a/test/suite/intl402/ch12/12.3/12.3.2_4.js +++ b/test/suite/intl402/ch12/12.3/12.3.2_4.js @@ -2,19 +2,15 @@ // This code is governed by the BSD license found in the LICENSE file. /** - * @path intl402/ch12/12.3/12.3.2_4.js * @description Tests that Intl.NumberFormat.prototype.format - * hangles NaN, Infinity, and -Infinity properly. + * handles NaN, Infinity, and -Infinity properly. * @author: Roozbeh Pournader */ -var testcase = function() { - "use strict"; - - // FIXME: We are only listing Numeric_Type=Decimal. May need to add more - // when the spec clarifies. Current as of Unicode 6.1. - var hasUnicodeDigits = new RegExp('.*([' + - '\u0030-\u0039\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F' + +// FIXME: We are only listing Numeric_Type=Decimal. May need to add more +// when the spec clarifies. Current as of Unicode 6.1. +var hasUnicodeDigits = new RegExp('.*([' + + '0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F' + '\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF' + '\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0E50-\u0E59\u0ED0-\u0ED9' + '\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819' + @@ -27,40 +23,37 @@ var testcase = function() { '\uD805[\uDEC0-\uDEC9]|' + '\uD835[\uDFCE-\uDFFF])'); - var formatter = new Intl.NumberFormat(); - var formattedNaN = formatter.format(NaN); - var formattedInfinity = formatter.format(Infinity); - var formattedNegativeInfinity = formatter.format(-Infinity); +var formatter = new Intl.NumberFormat(); +var formattedNaN = formatter.format(NaN); +var formattedInfinity = formatter.format(Infinity); +var formattedNegativeInfinity = formatter.format(-Infinity); - if (formattedNaN === formattedInfinity) { +if (formattedNaN === formattedInfinity) { $ERROR('Intl.NumberFormat formats NaN and Infinity the ' + 'same way.'); - } +} - if (formattedNaN === formattedNegativeInfinity) { +if (formattedNaN === formattedNegativeInfinity) { $ERROR('Intl.NumberFormat formats NaN and negative ' + 'Infinity the same way.'); - } +} - if (formattedInfinity === formattedNegativeInfinity) { +if (formattedInfinity === formattedNegativeInfinity) { $ERROR('Intl.NumberFormat formats Infinity and ' + - 'negaive Infinity the same way.'); - } + 'negative Infinity the same way.'); +} - if (hasUnicodeDigits.test(formattedNaN)) { +if (hasUnicodeDigits.test(formattedNaN)) { $ERROR('Intl.NumberFormat formats NaN using a digit.'); - } +} - if (hasUnicodeDigits.test(formattedInfinity)) { +if (hasUnicodeDigits.test(formattedInfinity)) { $ERROR('Intl.NumberFormat formats Infinity using a ' + 'digit.'); - } +} - if (hasUnicodeDigits.test(formattedNegativeInfinity)) { +if (hasUnicodeDigits.test(formattedNegativeInfinity)) { $ERROR('Intl.NumberFormat formats negative Infinity ' + 'using a digit.'); - } - - return true; } -runTestCase(testcase); + diff --git a/test/suite/intl402/ch12/12.3/12.3.2_5_b.js b/test/suite/intl402/ch12/12.3/12.3.2_5_b.js index 94a900d56..efe15575d 100644 --- a/test/suite/intl402/ch12/12.3/12.3.2_5_b.js +++ b/test/suite/intl402/ch12/12.3/12.3.2_5_b.js @@ -2,33 +2,26 @@ // This code is governed by the BSD license found in the LICENSE file. /** - * @path intl402/ch12/12.3/12.3.2_5_b.js * @description Tests that Intl.NumberFormat.prototype.format * formats percent values properly. * @author: Roozbeh Pournader */ -var testcase = function() { - "use strict"; +var numberFormatter = new Intl.NumberFormat(); +var percentFormatter = new Intl.NumberFormat(undefined, {style: 'percent'}); - var numberFormatter = new Intl.NumberFormat(); - var percentFormatter = new Intl.NumberFormat(undefined, {style: 'percent'}); +var formattedTwenty = numberFormatter.format(20); +var formattedTwentyPercent = percentFormatter.format(0.20); - var formattedTwenty = numberFormatter.format(20); - var formattedTwentyPercent = percentFormatter.format(0.20); - - // FIXME: May not work for some theoretical locales where percents and - // normal numbers are formatted using different numbering systems. - if (formattedTwentyPercent.indexOf(formattedTwenty) === -1) { +// FIXME: May not work for some theoretical locales where percents and +// normal numbers are formatted using different numbering systems. +if (formattedTwentyPercent.indexOf(formattedTwenty) === -1) { $ERROR("Intl.NumberFormat's formatting of 20% does not include a " + "formatting of 20 as a substring."); - } +} - // FIXME: Move this to somewhere appropriate - if (percentFormatter.format(0.011) === percentFormatter.format(0.02)) { +// FIXME: Move this to somewhere appropriate +if (percentFormatter.format(0.011) === percentFormatter.format(0.02)) { $ERROR('Intl.NumberFormat is formatting 1.1% and 2% the same way.'); - } - - return true; } -runTestCase(testcase); + diff --git a/test/suite/intl402/ch12/12.3/12.3.2_5_e.js b/test/suite/intl402/ch12/12.3/12.3.2_5_e.js index 4d23bd1a9..234ae6325 100644 --- a/test/suite/intl402/ch12/12.3/12.3.2_5_e.js +++ b/test/suite/intl402/ch12/12.3/12.3.2_5_e.js @@ -2,16 +2,12 @@ // This code is governed by the BSD license found in the LICENSE file. /** - * @path intl402/ch12/12.3/12.3.2_5_e.js * @description Tests that Intl.NumberFormat.prototype.format * supports all alternative numbering systems. * @author: Roozbeh Pournader */ -var testcase = function() { - "use strict"; - - var numberingSystems = { +var numberingSystems = { arab: 0x0660, arabext: 0x06F0, beng: 0x09E6, @@ -33,22 +29,19 @@ var testcase = function() { telu: 0x0C66, thai: 0x0E50, tibt: 0x0F20 - }; +}; - var options, formatter; - var s, zeroCode, digitList; +var options, formatter; +var s, zeroCode, digitList; - for (s in numberingSystems) { +for (s in numberingSystems) { zeroCode = numberingSystems[s]; if (typeof zeroCode === 'number') { - digitList = [zeroCode, zeroCode+1, zeroCode+2, zeroCode+3, zeroCode+4, + digitList = [zeroCode, zeroCode+1, zeroCode+2, zeroCode+3, zeroCode+4, zeroCode+5, zeroCode+6, zeroCode+7, zeroCode+8, zeroCode+9]; - numberingSystems[s] = digitList; + numberingSystems[s] = digitList; } - } +} - // FIXME: Unfinished +// FIXME: Unfinished - return true; -} -runTestCase(testcase); diff --git a/test/suite/intl402/ch12/12.3/12.3.js b/test/suite/intl402/ch12/12.3/12.3.js index 7327197bf..282a10bf6 100644 --- a/test/suite/intl402/ch12/12.3/12.3.js +++ b/test/suite/intl402/ch12/12.3/12.3.js @@ -2,20 +2,15 @@ // This code is governed by the BSD license found in the LICENSE file. /** - * @path intl402/ch12/12.3/12.3.js - * @description Tests that Intl.NumberFormat.prototype is an intance of - * Intl.NumberFormat. + * @description Tests that Intl.NumberFormat.prototype is an object that + * has been initialized as an Intl.NumberFormat. * @author: Roozbeh Pournader */ -var testcase = function() { - "use strict"; - - if (!(Intl.NumberFormat.prototype instanceof Intl.NumberFormat)) { - $ERROR("Intl.NumberFormat's prototype is not an instance of " + - "Intl.NumberFormat"); - } - - return true; +// test by calling a function that would fail if "this" were not an object +// initialized as an Intl.NumberFormat +if (typeof Intl.NumberFormat.prototype.format(0) !== "string") { + $ERROR("Intl.NumberFormat's prototype is not an object that has been " + + "initialized as an Intl.NumberFormat"); } -runTestCase(testcase); + diff --git a/test/suite/intl402/ch13/13.2/13.2.1.js b/test/suite/intl402/ch13/13.2/13.2.1.js index c5a7b1967..4ec28c5d3 100644 --- a/test/suite/intl402/ch13/13.2/13.2.1.js +++ b/test/suite/intl402/ch13/13.2/13.2.1.js @@ -2,32 +2,25 @@ // This code is governed by the BSD license found in the LICENSE file. /** - * @path intl402/ch13/13.2/13.2.1.js * @description Tests that the Intl.DateTimeFormat prototype object exists and * is not writable, enumerable, or configurable. * @author: Roozbeh Pournader */ -var testcase = function() { - "use strict"; +var desc; - var desc; - - if (!Intl.DateTimeFormat.hasOwnProperty('prototype')) { +if (!Intl.DateTimeFormat.hasOwnProperty('prototype')) { $ERROR('Intl.DateTimeFormat has no prototype property'); - } +} - desc = Object.getOwnPropertyDescriptor(Intl.DateTimeFormat, 'prototype'); - if (desc.writable === true) { +desc = Object.getOwnPropertyDescriptor(Intl.DateTimeFormat, 'prototype'); +if (desc.writable === true) { $ERROR('Intl.DateTimeFormat.prototype is writable.'); - } - if (desc.enumerable === true) { +} +if (desc.enumerable === true) { $ERROR('Intl.DateTimeFormat.prototype is enumerable.'); - } - if (desc.configurable === true) { +} +if (desc.configurable === true) { $ERROR('Intl.DateTimeFormat.prototype is configurable.'); - } - - return true; } -runTestCase(testcase); + diff --git a/test/suite/intl402/ch13/13.2/13.2.2.js b/test/suite/intl402/ch13/13.2/13.2.2.js index 9bcfa54f6..42eedc0a1 100644 --- a/test/suite/intl402/ch13/13.2/13.2.2.js +++ b/test/suite/intl402/ch13/13.2/13.2.2.js @@ -2,34 +2,27 @@ // This code is governed by the BSD license found in the LICENSE file. /** - * @path intl402/ch13/13.2/13.2.2.js - * @description Tests that the Intl.DateTimeFormat has a supportedLocalesOf + * @description Tests that Intl.DateTimeFormat has a supportedLocalesOf * property, and it works as planned. * @author: Roozbeh Pournader */ -var testcase = function() { - "use strict"; - - var supported = (new Intl.LocaleList())[0]; - var notSupported = 'zxx'; - var requestedLocales = [supported, notSupported]; +var defaultLocale = new Intl.DateTimeFormat().resolvedOptions().locale; +var notSupported = 'zxx'; // "no linguistic content" +var requestedLocales = [defaultLocale, notSupported]; - var supportedLocales; +var supportedLocales; - if (!Intl.DateTimeFormat.hasOwnProperty('supportedLocalesOf')) { +if (!Intl.DateTimeFormat.hasOwnProperty('supportedLocalesOf')) { $ERROR("Intl.DateTimeFormat doesn't have a supportedLocalesOf property."); - } +} - supportedLocales = Intl.DateTimeFormat.supportedLocalesOf(requestedLocales); - if (supportedLocales.length !== 1) { +supportedLocales = Intl.DateTimeFormat.supportedLocalesOf(requestedLocales); +if (supportedLocales.length !== 1) { $ERROR('The length of supported locales list is not 1.'); - } - - if (supportedLocales[0] !== supported) { - $ERROR('The supported locale is not returned in the supported list.'); - } +} - return true; +if (supportedLocales[0] !== defaultLocale) { + $ERROR('The default locale is not returned in the supported list.'); } -runTestCase(testcase); + diff --git a/test/suite/intl402/ch13/13.2/13.2.3.js b/test/suite/intl402/ch13/13.2/13.2.3.js index 56f9eadf5..333d97ae8 100644 --- a/test/suite/intl402/ch13/13.2/13.2.3.js +++ b/test/suite/intl402/ch13/13.2/13.2.3.js @@ -2,25 +2,18 @@ // This code is governed by the BSD license found in the LICENSE file. /** - * @path intl402/ch13/13.2/13.2.3.js - * @description Tests the internal properties of Intl.DateTimeFormat + * @description Tests the internal properties of Intl.DateTimeFormat. * @author: Roozbeh Pournader */ -var testcase = function() { - "use strict"; - - var defaultLocale = (new Intl.LocaleList())[0]; - var supportedLocales = Intl.DateTimeFormat.supportedLocalesOf([defaultLocale]); +var defaultLocale = new Intl.DateTimeFormat([]).resolvedOptions().locale; +var supportedLocales = Intl.DateTimeFormat.supportedLocalesOf([defaultLocale]); - if (supportedLocales.length < 1 || supportedLocales[0] != defaultLocale) { - $ERROR('The default Locale is not supported by Intl.DateTimeFormat'); - } +if (supportedLocales.length < 1 || supportedLocales[0] !== defaultLocale) { + $ERROR('The default locale is not supported by Intl.DateTimeFormat'); +} - // FIXME: Find a way to check that [[relevantExtensionKeys]] === ['ca', 'nu'] - - // FIXME: Find a way to check specified properties of [[localeData]] +// FIXME: Find a way to check that [[relevantExtensionKeys]] === ['ca', 'nu'] - return true; -} -runTestCase(testcase); +// FIXME: Find a way to check specified properties of [[localeData]] + diff --git a/test/suite/intl402/ch13/13.2/13.2.js b/test/suite/intl402/ch13/13.2/13.2.js index e58ac5dc4..59785479a 100644 --- a/test/suite/intl402/ch13/13.2/13.2.js +++ b/test/suite/intl402/ch13/13.2/13.2.js @@ -2,23 +2,16 @@ // This code is governed by the BSD license found in the LICENSE file. /** - * @path intl402/ch13/13.2/13.2.js * @description Tests that the Intl.DateTimeFormat constructor has a length * property that equals 2. * @author: Roozbeh Pournader */ -var testcase = function() { - "use strict"; - - if (!Intl.DateTimeFormat.hasOwnProperty('length')) { +if (!Intl.DateTimeFormat.hasOwnProperty('length')) { $ERROR('Intl.DateTimeFormat has no length property'); - } +} - if (Intl.DateTimeFormat.length != 2) { +if (Intl.DateTimeFormat.length != 2) { $ERROR('Intl.DateTimeFormat.length is not 2.'); - } - - return true; } -runTestCase(testcase); + diff --git a/test/suite/intl402/ch13/13.3/13.3.1.js b/test/suite/intl402/ch13/13.3/13.3.1.js index 8ce7b92b9..1755dd64b 100644 --- a/test/suite/intl402/ch13/13.3/13.3.1.js +++ b/test/suite/intl402/ch13/13.3/13.3.1.js @@ -2,20 +2,13 @@ // This code is governed by the BSD license found in the LICENSE file. /** - * @path intl402/ch13/13.3/13.3.1.js * @description Tests that Intl.DateTimeFormat.prototype.constructor is the * Intl.DateTimeFormat. * @author: Roozbeh Pournader */ -var testcase = function() { - "use strict"; - - if (Intl.DateTimeFormat.prototype.constructor !== Intl.DateTimeFormat) { - $ERROR("Intl.DateTimeFormat.prototype.constructor is not the same as " - +"Intl.DateTimeFormat"); - } - - return true; +if (Intl.DateTimeFormat.prototype.constructor !== Intl.DateTimeFormat) { + $ERROR("Intl.DateTimeFormat.prototype.constructor is not the same as " + + "Intl.DateTimeFormat"); } -runTestCase(testcase); + diff --git a/test/suite/intl402/ch13/13.3/13.3.js b/test/suite/intl402/ch13/13.3/13.3.js index bb33a2037..e1d795b91 100644 --- a/test/suite/intl402/ch13/13.3/13.3.js +++ b/test/suite/intl402/ch13/13.3/13.3.js @@ -2,20 +2,15 @@ // This code is governed by the BSD license found in the LICENSE file. /** - * @path intl402/ch13/13.3/13.3.js - * @description Tests that Intl.DateTimeFormat.prototype is an intance of - * Intl.DateTimeFormat. + * @description Tests that Intl.DateTimeFormat.prototype is an object that + * has been initialized as an Intl.DateTimeFormat. * @author: Roozbeh Pournader */ -var testcase = function() { - "use strict"; - - if (!(Intl.DateTimeFormat.prototype instanceof Intl.DateTimeFormat)) { - $ERROR("Intl.DateTimeFormat's prototype is not an instance of " + - "Intl.DateTimeFormat"); - } - - return true; +// test by calling a function that would fail if "this" were not an object +// initialized as an Intl.DateTimeFormat +if (typeof Intl.DateTimeFormat.prototype.format(0) !== "string") { + $ERROR("Intl.DateTimeFormat's prototype is not an object that has been " + + "initialized as an Intl.DateTimeFormat"); } -runTestCase(testcase); + diff --git a/tools/packaging/packager.py b/tools/packaging/packager.py index dbdde06a4..ae524306d 100644 --- a/tools/packaging/packager.py +++ b/tools/packaging/packager.py @@ -238,7 +238,8 @@ for chapter in TEST_SUITE_SECTIONS: #now get the metadata added. tempDict = convertDocString("".join(scriptCode)) for tempKey in tempDict.keys(): - #TODO - is this check really necessary? + #path is set from the file path above; the "@path" property + #in comments is redundant if not (tempKey in ["path"]): testDict[tempKey] = tempDict[tempKey] diff --git a/website/json/intl402.json b/website/json/intl402.json index ebc3391da..322c0ac12 100644 --- a/website/json/intl402.json +++ b/website/json/intl402.json @@ -1 +1 @@ -{"testsCollection":{"name":"Chapter - intl402","numTests":"34","tests":[{"code":"Ly8vIENvcHlyaWdodCAoYykgMjAxMiBFY21hIEludGVybmF0aW9uYWwuICBBbGwgcmlnaHRzIHJlc2VydmVkLiANCi8qKg0KICogQHBhdGggaW50bDQwMi9jaDAxLzEuMi8xLjItMV8xLmpzDQogKiBAZGVzY3JpcHRpb24gVGhpcyBpcyBhbiBleGFtcGxlIHNob3dpbmcgaG93IHRvIGNyZWF0ZSBFY21hIHN0YW5kYXJkIDQwMiB0ZXN0cyBhbG9uZ3NpZGUgdGVzdDI2MiB0ZXN0cy4gU2hvdWxkIGJlIHJlbW92ZWQgb25jZSB0aGUgNDAyIGVmZm9ydCBnZXRzIHVuZGVyd2F5DQogKi8NCg0KLy9UaGUgZmlyc3QgdGVzdCBjYXNlIGZvciBhIGh5cG90aGV0aWNhbCBTdGVwIDEgb2Ygc2VjdGlvbiAxLjIgaW4gdGhlIEVjbWEgDQovL3N0YW5kYXJkIDQwMi4gWWF5IQ0KDQpmdW5jdGlvbiB0ZXN0Y2FzZSgpIHsNCiAgICAidXNlIHN0cmljdCI7DQogICAgDQogICAgLy93aGV0aGVyIHRoZSB0ZXN0IGNhc2UgcGFzc2VkIG9yIGZhaWxlZA0KICAgIHZhciBwYXNzZWQgPSBmYWxzZTsNCiAgICANCiAgICAvL0hlcmUgaXMgd2hlcmUgeW91J2QgYWN0dWFsbHkgdGVzdCBTdGVwIDEgb2Ygc2VjdGlvbiAxLjIgb2YgdGhlIA0KICAgIC8vaHlwb3RoZXRpY2FsIHN0YW5kYXJkLiAgSWYgdGhlIHRlc3QgcGFzc2VkIGFnYWluc3QgYW4gDQogICAgLy9pbXBsZW1lbnRhdGlvbiwgeW91J2Qgc2V0IHBhc3NlZCB0byAndHJ1ZScuDQogICAgcGFzc2VkID0gdHJ1ZTsNCiAgICANCiAgICByZXR1cm4gcGFzc2VkOyANCn0NCnJ1blRlc3RDYXNlKHRlc3RjYXNlKTsNCg==","commentary":"","description":"This is an example showing how to create Ecma standard 402 tests alongside test262 tests. Should be removed once the 402 effort gets underway","path":"TestCases/intl402/ch01/1.2/1.2-1_1.js"},{"code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLyoqCiAqIEBwYXRoIGludGw0MDIvY2gwOC84LjAvOC4wLmpzCiAqIEBkZXNjcmlwdGlvbiBUZXN0cyBwcm9wZXJ0aWVzIG9mIEludGwgb2JqZWN0LgogKi8KCmZ1bmN0aW9uIHRlc3RjYXNlKCkgewogICJ1c2Ugc3RyaWN0IjsKICAgIAogIHZhciBwYXNzZWQgPSBmYWxzZTsKCiAgLy8gV2Uga2VlcCBJbnRsIGV4dGVuc2libGUgYW5kIG5vdCBmcm96ZW4uCiAgaWYgKE9iamVjdC5pc0Zyb3plbihJbnRsKSA9PT0gdHJ1ZSkgewogICAgJEVSUk9SKCdpc0Zyb3plbihJbnRsKSByZXR1cm5zIHRydWUuJykKICB9CgogIGlmIChPYmplY3QuaXNFeHRlbnNpYmxlKEludGwpID09PSBmYWxzZSkgewogICAgJEVSUk9SKCdpc0V4dGVuc2libGUoSW50bCkgcmV0dXJucyBmYWxzZS4nKQogIH0KCiAgdmFyIGZhbHNleSA9IHVuZGVmaW5lZDsKCiAgLy8gSW50bCBjYW4ndCBiZSBjb25zdHJ1Y3RlZC4KICB0cnkgewogICAgZmFsc2V5ID0gbmV3IEludGwoKTsKICB9IGNhdGNoIChlKSB7CiAgfQoKICBpZiAoISFmYWxzZXkpIHsKICAgICRFUlJPUignSW50bCBvYmplY3Qgc2hvdWxkIG5vdCBiZSBjb25zdHJ1Y3RhYmxlLicpCiAgfQoKICAvLyBJbnRsIGNhbid0IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLgogIHRyeSB7CiAgICBmYWxzZXkgPSBJbnRsKCk7CiAgfSBjYXRjaCAoZSkgewogIH0KCiAgaWYgKCEhZmFsc2V5KSB7CiAgICAkRVJST1IoJ0ludGwgc2hvdWxkIG5vdCBiZSBjYWxsYWJsZS4nKQogIH0KCiAgcGFzc2VkID0gdHJ1ZTsKICAgIAogIHJldHVybiBwYXNzZWQ7IAp9CnJ1blRlc3RDYXNlKHRlc3RjYXNlKTs=","commentary":"","description":"Tests properties of Intl object.","path":"TestCases/intl402/ch08/8.0/8.0.js"},{"code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLyoqCiAqIEBwYXRoIGludGw0MDIvY2gwOC84LjEvOC4xLmpzCiAqIEBkZXNjcmlwdGlvbiBUZXN0cyB0aGF0IEludGwgb2JqZWN0IGhhcyBwcm9wZXIgY29uc3RydWN0b3JzLgogKi8KCmZ1bmN0aW9uIHRlc3RjYXNlKCkgewogICJ1c2Ugc3RyaWN0IjsKICAgIAogIHZhciBwYXNzZWQgPSBmYWxzZTsKCiAgaWYgKEludGwgPT09IHVuZGVmaW5lZCkgewogICAgJEVSUk9SKCdJbnRsIG9iamVjdCBpcyB1bmRlZmluZWQuJyk7CiAgfQoKICBpZiAodHlwZW9mIEludGwuTG9jYWxlTGlzdCAhPT0gJ2Z1bmN0aW9uJykgewogICAgJEVSUk9SKCdJbnRsLkxvY2FsZUxpc3QgaXMgbm90IGEgZnVuY3Rpb24uJykKICB9CgogIGlmICh0eXBlb2YgSW50bC5Db2xsYXRvciAhPT0gJ2Z1bmN0aW9uJykgewogICAgJEVSUk9SKCdJbnRsLkNvbGxhdG9yIGlzIG5vdCBhIGZ1bmN0aW9uLicpCiAgfQoKICBpZiAodHlwZW9mIEludGwuTnVtYmVyRm9ybWF0ICE9PSAnZnVuY3Rpb24nKSB7CiAgICAkRVJST1IoJ0ludGwuTnVtYmVyRm9ybWF0IGlzIG5vdCBhIGZ1bmN0aW9uLicpCiAgfQoKICBpZiAodHlwZW9mIEludGwuRGF0ZVRpbWVGb3JtYXQgIT09ICdmdW5jdGlvbicpIHsKICAgICRFUlJPUignSW50bC5EYXRlVGltZUZvcm1hdCBpcyBub3QgYSBmdW5jdGlvbi4nKQogIH0KCiAgcGFzc2VkID0gdHJ1ZTsKICAgIAogIHJldHVybiBwYXNzZWQ7IAp9CnJ1blRlc3RDYXNlKHRlc3RjYXNlKTs=","commentary":"","description":"Tests that Intl object has proper constructors.","path":"TestCases/intl402/ch08/8.1/8.1.js"},{"code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLyoqCiAqIEBwYXRoIGludGw0MDIvY2gwOS85LjEvOS4xLjFfMS5qcwogKiBAZGVzY3JpcHRpb24gVGVzdHMgaW5pdGlhbGl6YXRpb24gb2YgTG9jYWxlTGlzdCBvYmplY3Qgd2l0aCBubyBwYXJhbWV0ZXJzLgogKi8KCmZ1bmN0aW9uIHRlc3RjYXNlKCkgewogICJ1c2Ugc3RyaWN0IjsKICAgIAogIHZhciBwYXNzZWQgPSBmYWxzZTsKCiAgdmFyIGxpc3QgPSBuZXcgSW50bC5Mb2NhbGVMaXN0KCk7CiAgaWYgKGxpc3QubGVuZ3RoICE9PSAxKSB7CiAgICAkRVJST1IoJ0xvY2FsZUxpc3QgY29uc3RydWN0ZWQgd2l0aCBubyBhcmd1bWVudHMgc2hvdWxkIGhhdmUgMSBlbGVtZW50LicpOwogIH0KCiAgcGFzc2VkID0gdHJ1ZTsKICAgIAogIHJldHVybiBwYXNzZWQ7IAp9CnJ1blRlc3RDYXNlKHRlc3RjYXNlKTs=","commentary":"","description":"Tests initialization of LocaleList object with no parameters.","path":"TestCases/intl402/ch09/9.1/9.1.1_1.js"},{"code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLyoqCiAqIEBwYXRoIGludGw0MDIvY2gwOS85LjEvOS4xLjFfMl8xLmpzCiAqIEBkZXNjcmlwdGlvbiBUZXN0cyBpbml0aWFsaXphdGlvbiBvZiBMb2NhbGVMaXN0IG9iamVjdCB3aXRoIGFuIGVtcHR5IGxpc3QuCiAqLwoKZnVuY3Rpb24gdGVzdGNhc2UoKSB7CiAgInVzZSBzdHJpY3QiOwogICAgCiAgdmFyIHBhc3NlZCA9IGZhbHNlOwoKICB2YXIgbGlzdCA9IG5ldyBJbnRsLkxvY2FsZUxpc3QoW10pOwogIGlmIChsaXN0Lmxlbmd0aCAhPT0gMCkgewogICAgJEVSUk9SKCdMb2NhbGVMaXN0IGNvbnN0cnVjdGVkIHdpdGggZW1wdHkgbGlzdCBzaG91bGQgaGF2ZSAwIGVsZW1lbnRzLicpOwogIH0KCiAgcGFzc2VkID0gdHJ1ZTsKICAgIAogIHJldHVybiBwYXNzZWQ7IAp9CnJ1blRlc3RDYXNlKHRlc3RjYXNlKTs=","commentary":"","description":"Tests initialization of LocaleList object with an empty list.","path":"TestCases/intl402/ch09/9.1/9.1.1_2_1.js"},{"code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLyoqCiAqIEBwYXRoIGludGw0MDIvY2gwOS85LjEvOS4xLjFfMl8yLmpzCiAqIEBkZXNjcmlwdGlvbiBUZXN0cyBpbml0aWFsaXphdGlvbiBvZiBMb2NhbGVMaXN0IG9iamVjdCB3aXRoIGR1cGxpY2F0ZSBsYW5ndWFnZSBJRHMuCiAqLwoKZnVuY3Rpb24gdGVzdGNhc2UoKSB7CiAgInVzZSBzdHJpY3QiOwogICAgCiAgdmFyIHBhc3NlZCA9IGZhbHNlOwoKICB2YXIgbGlzdCA9IG5ldyBJbnRsLkxvY2FsZUxpc3QoWydzci1ycycsICdzci1ycyddKTsKICBpZiAobGlzdC5sZW5ndGggIT09IDEpIHsKICAgICRFUlJPUignRHVwbGljYXRlcyBzaG91bGQgYmUgcmVtb3ZlZCBmcm9tIHRoZSBsaXN0LicpOwogIH0KCiAgcGFzc2VkID0gdHJ1ZTsKICAgIAogIHJldHVybiBwYXNzZWQ7IAp9CnJ1blRlc3RDYXNlKHRlc3RjYXNlKTs=","commentary":"","description":"Tests initialization of LocaleList object with duplicate language IDs.","path":"TestCases/intl402/ch09/9.1/9.1.1_2_2.js"},{"code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLyoqCiAqIEBwYXRoIGludGw0MDIvY2gwOS85LjEvOS4xLjFfMl8zLmpzCiAqIEBkZXNjcmlwdGlvbiBUZXN0cyB0aGF0IGxhbmd1YWdlIElEIGdldHMgY2Fub25pY2FsaXplZCBpbiBMb2NhbGVMaXN0LgogKi8KCmZ1bmN0aW9uIHRlc3RjYXNlKCkgewogICJ1c2Ugc3RyaWN0IjsKICAgIAogIHZhciBwYXNzZWQgPSBmYWxzZTsKCiAgdmFyIGxpc3QgPSBuZXcgSW50bC5Mb2NhbGVMaXN0KFsnU1ItQ1lSTC1yUyddKTsKICBpZiAobGlzdFswXSAhPT0gJ3NyLUN5cmwtUlMnKSB7CiAgICAkRVJST1IoJ0xvY2FsZSAnICsgbGlzdFswXSArICcgd2FzIG5vdCBwcm9wZXJseSBjYW5vbmljYWxpemVkLicpOwogIH0KCiAgcGFzc2VkID0gdHJ1ZTsKICAgIAogIHJldHVybiBwYXNzZWQ7IAp9CnJ1blRlc3RDYXNlKHRlc3RjYXNlKTs=","commentary":"","description":"Tests that language ID gets canonicalized in LocaleList.","path":"TestCases/intl402/ch09/9.1/9.1.1_2_3.js"},{"code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLyoqCiAqIEBwYXRoIGludGw0MDIvY2gwOS85LjEvOS4xLjFfMl80LmpzCiAqIEBkZXNjcmlwdGlvbiBUZXN0cyBpbml0aWFsaXphdGlvbiBvZiBMb2NhbGVMaXN0IG9iamVjdCB3aXRoIG5vbi1zdHJpbmcgcGFyYW1ldGVycy4KICovCgpmdW5jdGlvbiB0ZXN0Y2FzZSgpIHsKICAidXNlIHN0cmljdCI7CiAgICAKICB2YXIgcGFzc2VkID0gZmFsc2U7CgogIHZhciBsaXN0ID0gdW5kZWZpbmVkOwogIHRyeSB7CiAgICBsaXN0ID0gbmV3IEludGwuTG9jYWxlTGlzdChbNV0pOwogIH0gY2F0Y2goZSkgewogICAgaWYgKCEoZSBpbnN0YW5jZW9mIFR5cGVFcnJvcikpIHsKICAgICAgJEVSUk9SKCdMb2NhbGVMaXN0IHNob3VsZCB0aHJvdyBUeXBlRXJyb3IgZXhjZXB0aW9uIGZvciBub24tc3RyaW5nIGFyZ3VtZW50LicpOwogICAgfQogIH0KICBpZiAobGlzdCAhPT0gdW5kZWZpbmVkKSB7CiAgICAkRVJST1IoJ0xvY2FsZUxpc3Qgc2hvdWxkIHRocm93IFR5cGVFcnJvciBleGNlcHRpb24gZm9yIG5vbi1zdHJpbmcgYXJndW1lbnQuJyk7CiAgfQoKICBwYXNzZWQgPSB0cnVlOwogICAgCiAgcmV0dXJuIHBhc3NlZDsgCn0KcnVuVGVzdENhc2UodGVzdGNhc2UpOw==","commentary":"","description":"Tests initialization of LocaleList object with non-string parameters.","path":"TestCases/intl402/ch09/9.1/9.1.1_2_4.js"},{"code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLyoqCiAqIEBwYXRoIGludGw0MDIvY2gwOS85LjEvOS4xLjFfMl81LmpzCiAqIEBkZXNjcmlwdGlvbiBUZXN0cyBpbml0aWFsaXphdGlvbiBvZiBMb2NhbGVMaXN0IG9iamVjdCB3aXRoIGludmFsaWQgbG9jYWxlIElEcy4KICovCgpmdW5jdGlvbiB0ZXN0Y2FzZSgpIHsKICAidXNlIHN0cmljdCI7CiAgICAKICB2YXIgcGFzc2VkID0gZmFsc2U7CgogIHZhciBsaXN0ID0gdW5kZWZpbmVkOwogIHRyeSB7CiAgICBsaXN0ID0gbmV3IEludGwuTG9jYWxlTGlzdChbJyddKTsKICB9IGNhdGNoKGUpIHsKICAgIC8vIFRocm93cyBpbnZhbGlkIGxhbmd1YWdlIHRhZyBleGNlcHRpb24uCiAgfQogIGlmIChsaXN0ICE9PSB1bmRlZmluZWQpIHsKICAgICRFUlJPUignRW1wdHkgc3RyaW5nIHNob3VsZCBiZSBhbiBpbnZhbGlkIGxvY2FsZSBpZGVudGlmaWVyLicpOwogIH0KCiAgcGFzc2VkID0gdHJ1ZTsKICAgIAogIHJldHVybiBwYXNzZWQ7IAp9CnJ1blRlc3RDYXNlKHRlc3RjYXNlKTs=","commentary":"","description":"Tests initialization of LocaleList object with invalid locale IDs.","path":"TestCases/intl402/ch09/9.1/9.1.1_2_5.js"},{"code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLyoqCiAqIEBwYXRoIGludGw0MDIvY2gwOS85LjEvOS4xLjIuanMKICogQGRlc2NyaXB0aW9uIFRlc3RzIEludGwuTG9jYWxlTGlzdCBhcyBhIGZ1bmN0aW9uLgogKi8KCmZ1bmN0aW9uIHRlc3RjYXNlKCkgewogICJ1c2Ugc3RyaWN0IjsKICAgIAogIHZhciBwYXNzZWQgPSBmYWxzZTsKCiAgdmFyIGxpc3QgPSBJbnRsLkxvY2FsZUxpc3QoKTsKCiAgaWYgKGxpc3QubGVuZ3RoICE9PSAxKSB7CiAgICAkRVJST1IoJ0xvY2FsZUxpc3QgY29uc3RydWN0ZWQgd2l0aCBubyBhcmd1bWVudHMgc2hvdWxkIGhhdmUgMSBlbGVtZW50LicpOwogIH0KCiAgLy8gVXNpbmcgbmV3IEludGwuTG9jYWxlTGlzdCBhbmQgY2FsbGluZyBJbnRsLkxvY2FsZUxpc3Qgc2hvdWxkIHByb2R1Y2UgdGhlCiAgLy8gc2FtZSByZXN1bHQuCiAgaWYgKG5ldyBJbnRsLkxvY2FsZUxpc3QoKVswXSAhPT0gbGlzdFswXSkgewogICAgJEVSUk9SKCdJbnRsLkxvY2FsZUxpc3QoKVswXSBzaG91bGQgYmUgZXF1YWwgdG8gbmV3IEludGwuTG9jYWxlTGlzdCgpWzBdJyk7CiAgfQoKICBwYXNzZWQgPSB0cnVlOwogICAgCiAgcmV0dXJuIHBhc3NlZDsgCn0KcnVuVGVzdENhc2UodGVzdGNhc2UpOw==","commentary":"","description":"Tests Intl.LocaleList as a function.","path":"TestCases/intl402/ch09/9.1/9.1.2.js"},{"code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLyoqCiAqIEBwYXRoIGludGw0MDIvY2gwOS85LjEvOS4xLjMuanMKICogQGRlc2NyaXB0aW9uIFRlc3RzIEludGwuTG9jYWxlTGlzdCBhcyBhIGNvbnN0cnVjdG9yLgogKi8KCmZ1bmN0aW9uIHRlc3RjYXNlKCkgewogICJ1c2Ugc3RyaWN0IjsKICAgIAogIHZhciBwYXNzZWQgPSBmYWxzZTsKCiAgdmFyIGxpc3QgPSBuZXcgSW50bC5Mb2NhbGVMaXN0KCk7CgogIGlmIChsaXN0Lmxlbmd0aCAhPT0gMSkgewogICAgJEVSUk9SKCdMb2NhbGVMaXN0IGNvbnN0cnVjdGVkIHdpdGggbm8gYXJndW1lbnRzIHNob3VsZCBoYXZlIDEgZWxlbWVudC4nKTsKICB9CgogIC8vIFVzaW5nIG5ldyBJbnRsLkxvY2FsZUxpc3QgYW5kIGNhbGxpbmcgSW50bC5Mb2NhbGVMaXN0IHNob3VsZCBwcm9kdWNlIHRoZQogIC8vIHNhbWUgcmVzdWx0LgogIGlmIChJbnRsLkxvY2FsZUxpc3QoKVswXSAhPT0gbGlzdFswXSkgewogICAgJEVSUk9SKCdJbnRsLkxvY2FsZUxpc3QoKVswXSBzaG91bGQgYmUgZXF1YWwgdG8gbmV3IEludGwuTG9jYWxlTGlzdCgpWzBdJyk7CiAgfQoKICBwYXNzZWQgPSB0cnVlOwogICAgCiAgcmV0dXJuIHBhc3NlZDsgCn0KcnVuVGVzdENhc2UodGVzdGNhc2UpOw==","commentary":"","description":"Tests Intl.LocaleList as a constructor.","path":"TestCases/intl402/ch09/9.1/9.1.3.js"},{"code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAcGF0aCBpbnRsNDAyL2NoMTEvMTEuMi8xMS4yLjEuanMKICogQGRlc2NyaXB0aW9uIFRlc3RzIHRoYXQgdGhlIEludGwuQ29sbGF0b3IgcHJvdG90eXBlIG9iamVjdCBleGlzdHMgYW5kCiAqIGlzIG5vdCB3cml0YWJsZSwgZW51bWVyYWJsZSwgb3IgY29uZmlndXJhYmxlLgogKi8KCnZhciB0ZXN0Y2FzZSA9IGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKCiAgdmFyIGRlc2M7CgogIGlmICghSW50bC5Db2xsYXRvci5oYXNPd25Qcm9wZXJ0eSgncHJvdG90eXBlJykpIHsKICAgICRFUlJPUignSW50bC5Db2xsYXRvciBoYXMgbm8gcHJvdG90eXBlIHByb3BlcnR5Jyk7CiAgfQoKICBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLCAncHJvdG90eXBlJyk7CiAgaWYgKGRlc2Mud3JpdGFibGUgPT09IHRydWUpIHsKICAgICRFUlJPUignSW50bC5Db2xsYXRvci5wcm90b3R5cGUgaXMgd3JpdGFibGUuJyk7CiAgfQogIGlmIChkZXNjLmVudW1lcmFibGUgPT09IHRydWUpIHsKICAgICRFUlJPUignSW50bC5Db2xsYXRvci5wcm90b3R5cGUgaXMgZW51bWVyYWJsZS4nKTsKICB9CiAgaWYgKGRlc2MuY29uZmlndXJhYmxlID09PSB0cnVlKSB7CiAgICAkRVJST1IoJ0ludGwuQ29sbGF0b3IucHJvdG90eXBlIGlzIGNvbmZpZ3VyYWJsZS4nKTsKICB9CgogIHJldHVybiB0cnVlOwp9CnJ1blRlc3RDYXNlKHRlc3RjYXNlKTsK","commentary":"","description":"Tests that the Intl.Collator prototype object exists and\nis not writable, enumerable, or configurable.","path":"TestCases/intl402/ch11/11.2/11.2.1.js"},{"code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAcGF0aCBpbnRsNDAyL2NoMTEvMTEuMi8xMS4yLjIuanMKICogQGRlc2NyaXB0aW9uIFRlc3RzIHRoYXQgdGhlIEludGwuQ29sbGF0b3IgaGFzIGEgc3VwcG9ydGVkTG9jYWxlc09mCiAqIHByb3BlcnR5LCBhbmQgaXQgd29ya3MgYXMgcGxhbm5lZC4KICovCgp2YXIgdGVzdGNhc2UgPSBmdW5jdGlvbigpIHsKICAidXNlIHN0cmljdCI7CgogIHZhciBzdXBwb3J0ZWQgPSAobmV3IEludGwuTG9jYWxlTGlzdCgpKVswXTsKICB2YXIgbm90U3VwcG9ydGVkID0gJ3p4eCc7CiAgdmFyIHJlcXVlc3RlZExvY2FsZXMgPSBbc3VwcG9ydGVkLCBub3RTdXBwb3J0ZWRdOwoKICB2YXIgc3VwcG9ydGVkTG9jYWxlczsKCiAgaWYgKCFJbnRsLkNvbGxhdG9yLmhhc093blByb3BlcnR5KCdzdXBwb3J0ZWRMb2NhbGVzT2YnKSkgewogICAgJEVSUk9SKCJJbnRsLkNvbGxhdG9yIGRvZXNuJ3QgaGF2ZSBhIHN1cHBvcnRlZExvY2FsZXNPZiBwcm9wZXJ0eS4iKTsKICB9CgogIHN1cHBvcnRlZExvY2FsZXMgPSBJbnRsLkNvbGxhdG9yLnN1cHBvcnRlZExvY2FsZXNPZihyZXF1ZXN0ZWRMb2NhbGVzKTsKICBpZiAoc3VwcG9ydGVkTG9jYWxlcy5sZW5ndGggIT09IDEpIHsKICAgICRFUlJPUignVGhlIGxlbmd0aCBvZiBzdXBwb3J0ZWQgbG9jYWxlcyBsaXN0IGlzIG5vdCAxLicpOwogIH0KCiAgaWYgKHN1cHBvcnRlZExvY2FsZXNbMF0gIT09IHN1cHBvcnRlZCkgewogICAgJEVSUk9SKCdUaGUgc3VwcG9ydGVkIGxvY2FsZSBpcyBub3QgcmV0dXJuZWQgaW4gdGhlIHN1cHBvcnRlZCBsaXN0LicpOwogIH0KCiAgcmV0dXJuIHRydWU7Cn0KcnVuVGVzdENhc2UodGVzdGNhc2UpOwo=","commentary":"","description":"Tests that the Intl.Collator has a supportedLocalesOf\nproperty, and it works as planned.","path":"TestCases/intl402/ch11/11.2/11.2.2.js"},{"code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAcGF0aCBpbnRsNDAyL2NoMTEvMTEuMi8xMS4yLjMuanMKICogQGRlc2NyaXB0aW9uIFRlc3RzIHRoZSBpbnRlcm5hbCBwcm9wZXJ0aWVzIG9mIEludGwuTnVtYmVyRm9ybWF0CiAqLwoKdmFyIHRlc3RjYXNlID0gZnVuY3Rpb24oKSB7CiAgInVzZSBzdHJpY3QiOwoKICB2YXIgZGVmYXVsdExvY2FsZSA9IChuZXcgSW50bC5Mb2NhbGVMaXN0KCkpWzBdOwogIHZhciBzdXBwb3J0ZWRMb2NhbGVzID0gSW50bC5Db2xsYXRvci5zdXBwb3J0ZWRMb2NhbGVzT2YoW2RlZmF1bHRMb2NhbGVdKTsKCiAgaWYgKHN1cHBvcnRlZExvY2FsZXMubGVuZ3RoIDwgMSB8fCBzdXBwb3J0ZWRMb2NhbGVzWzBdICE9IGRlZmF1bHRMb2NhbGUpIHsKICAgICRFUlJPUignVGhlIGRlZmF1bHQgTG9jYWxlIGlzIG5vdCBzdXBwb3J0ZWQgYnkgSW50bC5Db2xsYXRvcicpOwogIH0KCiAgLy8gRklYTUU6IEZpbmQgYSB3YXkgdG8gY2hlY2sgdGhhdCBbW3JlbGV2YW50RXh0ZW5zaW9uS2V5c11dID09PSBbJ251J10KCiAgLy8gRklYTUU6IEZpbmQgYSB3YXkgdG8gY2hlY2sgc3BlY2lmaWVkIHByb3BlcnRpZXMgb2YgW1tsb2NhbGVEYXRhXV0KCiAgcmV0dXJuIHRydWU7Cn0KcnVuVGVzdENhc2UodGVzdGNhc2UpOwo=","commentary":"","description":"Tests the internal properties of Intl.NumberFormat","path":"TestCases/intl402/ch11/11.2/11.2.3.js"},{"code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAcGF0aCBpbnRsNDAyL2NoMTEvMTEuMi8xMS4yLmpzCiAqIEBkZXNjcmlwdGlvbiBUZXN0cyB0aGF0IHRoZSBJbnRsLkNvbGxhdG9yIGNvbnN0cnVjdG9yIGhhcyBhIGxlbmd0aAogKiBwcm9wZXJ0eSB0aGF0IGVxdWFscyAyLgogKi8KCnZhciB0ZXN0Y2FzZSA9IGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKCiAgaWYgKCFJbnRsLkNvbGxhdG9yLmhhc093blByb3BlcnR5KCdsZW5ndGgnKSkgewogICAgJEVSUk9SKCdJbnRsLkNvbGxhdG9yIGhhcyBubyBsZW5ndGggcHJvcGVydHknKTsKICB9CgogIGlmIChJbnRsLkNvbGxhdG9yLmxlbmd0aCAhPSAyKSB7CiAgICAkRVJST1IoJ0ludGwuQ29sbGF0b3IubGVuZ3RoIGlzIG5vdCAyLicpOwogIH0KCiAgcmV0dXJuIHRydWU7Cn0KcnVuVGVzdENhc2UodGVzdGNhc2UpOwo=","commentary":"","description":"Tests that the Intl.Collator constructor has a length\nproperty that equals 2.","path":"TestCases/intl402/ch11/11.2/11.2.js"},{"code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAcGF0aCBpbnRsNDAyL2NoMTEvMTEuMy8xMS4zLjEuanMKICogQGRlc2NyaXB0aW9uIFRlc3RzIHRoYXQgSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29uc3RydWN0b3IgaXMgdGhlCiAqIEludGwuQ29sbGF0b3IuCiAqLwoKdmFyIHRlc3RjYXNlID0gZnVuY3Rpb24oKSB7CiAgInVzZSBzdHJpY3QiOwoKICBpZiAoSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29uc3RydWN0b3IgIT09IEludGwuQ29sbGF0b3IpIHsKICAgICRFUlJPUigiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29uc3RydWN0b3IgaXMgbm90IHRoZSBzYW1lIGFzICIgKwogICAgICAgICAgICJJbnRsLkNvbGxhdG9yIik7CiAgfQoKICByZXR1cm4gdHJ1ZTsKfQpydW5UZXN0Q2FzZSh0ZXN0Y2FzZSk7Cg==","commentary":"","description":"Tests that Intl.Collator.prototype.constructor is the\nIntl.Collator.","path":"TestCases/intl402/ch11/11.3/11.3.1.js"},{"code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAcGF0aCBpbnRsNDAyL2NoMTEvMTEuMy8xMS4zLmpzCiAqIEBkZXNjcmlwdGlvbiBUZXN0cyB0aGF0IEludGwuQ29sbGF0b3IucHJvdG90eXBlIGlzIGFuIGludGFuY2Ugb2YKICogSW50bC5Db2xsYXRvci4KICovCgp2YXIgdGVzdGNhc2UgPSBmdW5jdGlvbigpIHsKICAidXNlIHN0cmljdCI7CgogIGlmICghKEludGwuQ29sbGF0b3IucHJvdG90eXBlIGluc3RhbmNlb2YgSW50bC5Db2xsYXRvcikpIHsKICAgICRFUlJPUigiSW50bC5Db2xsYXRvcidzIHByb3RvdHlwZSBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgIiArCiAgICAgICAgICAgIkludGwuQ29sbGF0b3IiKTsKICB9CgogIHJldHVybiB0cnVlOwp9CnJ1blRlc3RDYXNlKHRlc3RjYXNlKTsK","commentary":"","description":"Tests that Intl.Collator.prototype is an intance of\nIntl.Collator.","path":"TestCases/intl402/ch11/11.3/11.3.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAcGF0aCBpbnRsNDAyL2NoMTIvMTIuMi8xMi4yLjEuanMKICogQGRlc2NyaXB0aW9uIFRlc3RzIHRoYXQgdGhlIEludGwuTnVtYmVyRm9ybWF0IHByb3RvdHlwZSBvYmplY3QgZXhpc3RzIGFuZAogKiBpcyBub3Qgd3JpdGFibGUsIGVudW1lcmFibGUsIG9yIGNvbmZpZ3VyYWJsZS4KICogQGF1dGhvcjogUm9vemJlaCBQb3VybmFkZXIKICovCgp2YXIgdGVzdGNhc2UgPSBmdW5jdGlvbigpIHsKICAidXNlIHN0cmljdCI7CgogIHZhciBkZXNjOwoKICBpZiAoIUludGwuTnVtYmVyRm9ybWF0Lmhhc093blByb3BlcnR5KCdwcm90b3R5cGUnKSkgewogICAgJEVSUk9SKCdJbnRsLk51bWJlckZvcm1hdCBoYXMgbm8gcHJvdG90eXBlIHByb3BlcnR5Jyk7CiAgfQoKICBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLk51bWJlckZvcm1hdCwgJ3Byb3RvdHlwZScpOwogIGlmIChkZXNjLndyaXRhYmxlID09PSB0cnVlKSB7CiAgICAkRVJST1IoJ0ludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZSBpcyB3cml0YWJsZS4nKTsKICB9CiAgaWYgKGRlc2MuZW51bWVyYWJsZSA9PT0gdHJ1ZSkgewogICAgJEVSUk9SKCdJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUgaXMgZW51bWVyYWJsZS4nKTsKICB9CiAgaWYgKGRlc2MuY29uZmlndXJhYmxlID09PSB0cnVlKSB7CiAgICAkRVJST1IoJ0ludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZSBpcyBjb25maWd1cmFibGUuJyk7CiAgfQoKICByZXR1cm4gdHJ1ZTsKfQpydW5UZXN0Q2FzZSh0ZXN0Y2FzZSk7Cg==","commentary":"","description":"Tests that the Intl.NumberFormat prototype object exists and\nis not writable, enumerable, or configurable.","path":"TestCases/intl402/ch12/12.2/12.2.1.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAcGF0aCBpbnRsNDAyL2NoMTIvMTIuMi8xMi4yLjIuanMKICogQGRlc2NyaXB0aW9uIFRlc3RzIHRoYXQgdGhlIEludGwuTnVtYmVyRm9ybWF0IGhhcyBhIHN1cHBvcnRlZExvY2FsZXNPZgogKiBwcm9wZXJ0eSwgYW5kIGl0IHdvcmtzIGFzIHBsYW5uZWQuCiAqIEBhdXRob3I6IFJvb3piZWggUG91cm5hZGVyCiAqLwoKdmFyIHRlc3RjYXNlID0gZnVuY3Rpb24oKSB7CiAgInVzZSBzdHJpY3QiOwoKICB2YXIgc3VwcG9ydGVkID0gKG5ldyBJbnRsLkxvY2FsZUxpc3QoKSlbMF07CiAgdmFyIG5vdFN1cHBvcnRlZCA9ICd6eHgnOwogIHZhciByZXF1ZXN0ZWRMb2NhbGVzID0gW3N1cHBvcnRlZCwgbm90U3VwcG9ydGVkXTsKICAgIAogIHZhciBzdXBwb3J0ZWRMb2NhbGVzOwoKICBpZiAoIUludGwuTnVtYmVyRm9ybWF0Lmhhc093blByb3BlcnR5KCdzdXBwb3J0ZWRMb2NhbGVzT2YnKSkgewogICAgJEVSUk9SKCJJbnRsLk51bWJlckZvcm1hdCBkb2Vzbid0IGhhdmUgYSBzdXBwb3J0ZWRMb2NhbGVzT2YgcHJvcGVydHkuIik7CiAgfQogICAgCiAgc3VwcG9ydGVkTG9jYWxlcyA9IEludGwuTnVtYmVyRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZihyZXF1ZXN0ZWRMb2NhbGVzKTsKICBpZiAoc3VwcG9ydGVkTG9jYWxlcy5sZW5ndGggIT09IDEpIHsKICAgICRFUlJPUignVGhlIGxlbmd0aCBvZiBzdXBwb3J0ZWQgbG9jYWxlcyBsaXN0IGlzIG5vdCAxLicpOwogIH0KICAgIAogIGlmIChzdXBwb3J0ZWRMb2NhbGVzWzBdICE9PSBzdXBwb3J0ZWQpIHsKICAgICRFUlJPUignVGhlIHN1cHBvcnRlZCBsb2NhbGUgaXMgbm90IHJldHVybmVkIGluIHRoZSBzdXBwb3J0ZWQgbGlzdC4nKTsKICB9CiAgICAKICByZXR1cm4gdHJ1ZTsKfQpydW5UZXN0Q2FzZSh0ZXN0Y2FzZSk7Cg==","commentary":"","description":"Tests that the Intl.NumberFormat has a supportedLocalesOf\nproperty, and it works as planned.","path":"TestCases/intl402/ch12/12.2/12.2.2.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAcGF0aCBpbnRsNDAyL2NoMTIvMTIuMi8xMi4yLjMuanMKICogQGRlc2NyaXB0aW9uIFRlc3RzIHRoZSBpbnRlcm5hbCBwcm9wZXJ0aWVzIG9mIEludGwuTnVtYmVyRm9ybWF0CiAqIEBhdXRob3I6IFJvb3piZWggUG91cm5hZGVyCiAqLwoKdmFyIHRlc3RjYXNlID0gZnVuY3Rpb24oKSB7CiAgInVzZSBzdHJpY3QiOwoKICB2YXIgZGVmYXVsdExvY2FsZSA9IChuZXcgSW50bC5Mb2NhbGVMaXN0KCkpWzBdOwogIHZhciBzdXBwb3J0ZWRMb2NhbGVzID0gSW50bC5OdW1iZXJGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKFtkZWZhdWx0TG9jYWxlXSk7CiAgCiAgaWYgKHN1cHBvcnRlZExvY2FsZXMubGVuZ3RoIDwgMSB8fCBzdXBwb3J0ZWRMb2NhbGVzWzBdICE9IGRlZmF1bHRMb2NhbGUpIHsKICAgICRFUlJPUignVGhlIGRlZmF1bHQgTG9jYWxlIGlzIG5vdCBzdXBwb3J0ZWQgYnkgSW50bC5OdW1iZXJGb3JtYXQnKTsKICB9CgogIC8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIGNoZWNrIHRoYXQgW1tyZWxldmFudEV4dGVuc2lvbktleXNdXSA9PT0gWydudSddCiAgCiAgLy8gRklYTUU6IEZpbmQgYSB3YXkgdG8gY2hlY2sgc3BlY2lmaWVkIHByb3BlcnRpZXMgb2YgW1tsb2NhbGVEYXRhXV0gIAogIAogIHJldHVybiB0cnVlOwp9CnJ1blRlc3RDYXNlKHRlc3RjYXNlKTsK","commentary":"","description":"Tests the internal properties of Intl.NumberFormat","path":"TestCases/intl402/ch12/12.2/12.2.3.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAcGF0aCBpbnRsNDAyL2NoMTIvMTIuMi8xMi4yLmpzCiAqIEBkZXNjcmlwdGlvbiBUZXN0cyB0aGF0IHRoZSBJbnRsLk51bWJlckZvcm1hdCBjb25zdHJ1Y3RvciBoYXMgYSBsZW5ndGgKICogcHJvcGVydHkgdGhhdCBlcXVhbHMgMi4KICogQGF1dGhvcjogUm9vemJlaCBQb3VybmFkZXIKICovCgp2YXIgdGVzdGNhc2UgPSBmdW5jdGlvbigpIHsKICAidXNlIHN0cmljdCI7CgogIGlmICghSW50bC5OdW1iZXJGb3JtYXQuaGFzT3duUHJvcGVydHkoJ2xlbmd0aCcpKSB7CiAgICAkRVJST1IoJ0ludGwuTnVtYmVyRm9ybWF0IGhhcyBubyBsZW5ndGggcHJvcGVydHknKTsKICB9CiAgICAKICBpZiAoSW50bC5OdW1iZXJGb3JtYXQubGVuZ3RoICE9IDIpIHsKICAgICRFUlJPUignSW50bC5OdW1iZXJGb3JtYXQubGVuZ3RoIGlzIG5vdCAyLicpOwogIH0KICAgIAogIHJldHVybiB0cnVlOwp9CnJ1blRlc3RDYXNlKHRlc3RjYXNlKTsK","commentary":"","description":"Tests that the Intl.NumberFormat constructor has a length\nproperty that equals 2.","path":"TestCases/intl402/ch12/12.2/12.2.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAcGF0aCBpbnRsNDAyL2NoMTIvMTIuMy8xMi4zLjEuanMKICogQGRlc2NyaXB0aW9uIFRlc3RzIHRoYXQgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmNvbnN0cnVjdG9yIGlzIHRoZQogKiBJbnRsLk51bWJlckZvcm1hdC4KICogQGF1dGhvcjogUm9vemJlaCBQb3VybmFkZXIKICovCgp2YXIgdGVzdGNhc2UgPSBmdW5jdGlvbigpIHsKICAidXNlIHN0cmljdCI7CgogIGlmIChJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuY29uc3RydWN0b3IgIT09IEludGwuTnVtYmVyRm9ybWF0KSB7CiAgICAkRVJST1IoIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciBpcyBub3QgdGhlIHNhbWUgYXMgIgogICAgICAgICAgKyJJbnRsLk51bWJlckZvcm1hdCIpOwogIH0KICAKICByZXR1cm4gdHJ1ZTsKfQpydW5UZXN0Q2FzZSh0ZXN0Y2FzZSk7Cg==","commentary":"","description":"Tests that Intl.NumberFormat.prototype.constructor is the\nIntl.NumberFormat.","path":"TestCases/intl402/ch12/12.3/12.3.1.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAcGF0aCBpbnRsNDAyL2NoMTIvMTIuMy8xMi4zLjJfMi5qcwogKiBAZGVzY3JpcHRpb24gVGVzdHMgdGhhdCBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0CiAqIGNvbnZlcnRzIG90aGVyIHR5cGVzIHRvIG51bWJlcnMuCiAqIEBhdXRob3I6IFJvb3piZWggUG91cm5hZGVyCiAqLwoKdmFyIHRlc3RjYXNlID0gZnVuY3Rpb24oKSB7CiAgInVzZSBzdHJpY3QiOwoKICB2YXIgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCk7CiAgdmFyIHRlc3REYXRhID0gW3VuZGVmaW5lZCwgbnVsbCwgdHJ1ZSwgJzAuNjY2NjY2NiddOwogIHZhciBudW1iZXI7CiAgdmFyIGksIGlucHV0LCBjb3JyZWN0UmVzdWx0LCByZXN1bHQ7CgogIGZvciAoaSBpbiB0ZXN0RGF0YSkgewogICAgaW5wdXQgPSB0ZXN0RGF0YVtpXTsKICAgIG51bWJlciA9ICtpbnB1dDsKICAgIGNvcnJlY3RSZXN1bHQgPSBmb3JtYXR0ZXIuZm9ybWF0KG51bWJlcik7CiAgICAKICAgIHJlc3VsdCA9IGZvcm1hdHRlci5mb3JtYXQoaW5wdXQpOwogICAgaWYgKHJlc3VsdCAhPT0gY29ycmVjdFJlc3VsdCkgewogICAgICAkRVJST1IoJ0ludGwuTnVtYmVyRm9ybWF0IGRvZXMgbm90IGNvbnZlcnQgb3RoZXIgJyArCiAgICAgICAgJ3R5cGVzIHRvIG51bWJlcnMuIElucHV0OiAiJytpbnB1dCsnIiBPdXRwdXQ6ICInK3Jlc3VsdCsnIiAnKwogICAgICAgICdFeHBlY3RlZCBvdXRwdXQ6ICInK2NvcnJlY3RSZXN1bHQrJyInKTsKICAgIH0KICB9CgogIHJldHVybiB0cnVlOwp9CnJ1blRlc3RDYXNlKHRlc3RjYXNlKTsK","commentary":"","description":"Tests that Intl.NumberFormat.prototype.format\nconverts other types to numbers.","path":"TestCases/intl402/ch12/12.3/12.3.2_2.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAcGF0aCBpbnRsNDAyL2NoMTIvMTIuMy8xMi4zLjJfMy5qcwogKiBAZGVzY3JpcHRpb24gVGVzdHMgdGhhdCBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0CiAqIGRvZXNuJ3QgdHJlYXQgYWxsIG51bWJlcnMgYXMgbmVnYXRpdmUuCiAqIEBhdXRob3I6IFJvb3piZWggUG91cm5hZGVyCiAqLwoKdmFyIHRlc3RjYXNlID0gZnVuY3Rpb24oKSB7CiAgInVzZSBzdHJpY3QiOwoKICB2YXIgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCk7CiAgCiAgaWYgKGZvcm1hdHRlci5mb3JtYXQoMSkgPT09IGZvcm1hdHRlci5mb3JtYXQoLTEpKSB7CiAgICAkRVJST1IoJ0ludGwuTnVtYmVyRm9ybWF0IGlzIGZvcm1hdHRpbmcgMSBhbmQgLTEgdGhlIHNhbWUgd2F5LicpOwogIH0KCiAgaWYgKGZvcm1hdHRlci5mb3JtYXQoLTApICE9PSBmb3JtYXR0ZXIuZm9ybWF0KDApKSB7CiAgICAkRVJST1IoJ0ludGwuTnVtYmVyRm9ybWF0IGlzIGZvcm1hdHRpbmcgc2lnbmVkIHplcm9zIGRpZmZlcmVudGx5LicpOwogIH0KCiAgcmV0dXJuIHRydWU7Cn0KcnVuVGVzdENhc2UodGVzdGNhc2UpOwo=","commentary":"","description":"Tests that Intl.NumberFormat.prototype.format\ndoesn't treat all numbers as negative.","path":"TestCases/intl402/ch12/12.3/12.3.2_3.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAcGF0aCBpbnRsNDAyL2NoMTIvMTIuMy8xMi4zLjJfNC5qcwogKiBAZGVzY3JpcHRpb24gVGVzdHMgdGhhdCBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0CiAqIGhhbmdsZXMgTmFOLCBJbmZpbml0eSwgYW5kIC1JbmZpbml0eSBwcm9wZXJseS4KICogQGF1dGhvcjogUm9vemJlaCBQb3VybmFkZXIKICovCgp2YXIgdGVzdGNhc2UgPSBmdW5jdGlvbigpIHsKICAidXNlIHN0cmljdCI7CiAgCiAgLy8gRklYTUU6IFdlIGFyZSBvbmx5IGxpc3RpbmcgTnVtZXJpY19UeXBlPURlY2ltYWwuIE1heSBuZWVkIHRvIGFkZCBtb3JlCiAgLy8gd2hlbiB0aGUgc3BlYyBjbGFyaWZpZXMuIEN1cnJlbnQgYXMgb2YgVW5pY29kZSA2LjEuCiAgdmFyIGhhc1VuaWNvZGVEaWdpdHMgPSBuZXcgUmVnRXhwKCcuKihbJyArCiAgICAnXHUwMDMwLVx1MDAzOVx1MDY2MC1cdTA2NjlcdTA2RjAtXHUwNkY5XHUwN0MwLVx1MDdDOVx1MDk2Ni1cdTA5NkYnICsKICAgICdcdTA5RTYtXHUwOUVGXHUwQTY2LVx1MEE2Rlx1MEFFNi1cdTBBRUZcdTBCNjYtXHUwQjZGXHUwQkU2LVx1MEJFRicgKwogICAgJ1x1MEM2Ni1cdTBDNkZcdTBDRTYtXHUwQ0VGXHUwRDY2LVx1MEQ2Rlx1MEU1MC1cdTBFNTlcdTBFRDAtXHUwRUQ5JyArCiAgICAnXHUwRjIwLVx1MEYyOVx1MTA0MC1cdTEwNDlcdTEwOTAtXHUxMDk5XHUxN0UwLVx1MTdFOVx1MTgxMC1cdTE4MTknICsKICAgICdcdTE5NDYtXHUxOTRGXHUxOUQwLVx1MTlEOVx1MUE4MC1cdTFBODlcdTFBOTAtXHUxQTk5XHUxQjUwLVx1MUI1OScgKwogICAgJ1x1MUJCMC1cdTFCQjlcdTFDNDAtXHUxQzQ5XHUxQzUwLVx1MUM1OVx1QTYyMC1cdUE2MjlcdUE4RDAtXHVBOEQ5JyArCiAgICAnXHVBOTAwLVx1QTkwOVx1QTlEMC1cdUE5RDlcdUFBNTAtXHVBQTU5XHVBQkYwLVx1QUJGOVx1RkYxMC1cdUZGMTknICsKICAgICddfCcgKwogICAgJ1x1RDgwMVtcdURDQTAtXHVEQ0E5XXwnICsKICAgICdcdUQ4MDRbXHVEQzY2LVx1REM2Rlx1RENGMC1cdURDRjlcdUREMzYtXHVERDNGXHVEREQwLVx1REREOV18JyArCiAgICAnXHVEODA1W1x1REVDMC1cdURFQzldfCcgKwogICAgJ1x1RDgzNVtcdURGQ0UtXHVERkZGXSknKTsKCiAgdmFyIGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgpOwogIHZhciBmb3JtYXR0ZWROYU4gPSBmb3JtYXR0ZXIuZm9ybWF0KE5hTik7CiAgdmFyIGZvcm1hdHRlZEluZmluaXR5ID0gZm9ybWF0dGVyLmZvcm1hdChJbmZpbml0eSk7CiAgdmFyIGZvcm1hdHRlZE5lZ2F0aXZlSW5maW5pdHkgPSBmb3JtYXR0ZXIuZm9ybWF0KC1JbmZpbml0eSk7CgogIGlmIChmb3JtYXR0ZWROYU4gPT09IGZvcm1hdHRlZEluZmluaXR5KSB7CiAgICAkRVJST1IoJ0ludGwuTnVtYmVyRm9ybWF0IGZvcm1hdHMgTmFOIGFuZCBJbmZpbml0eSB0aGUgJyArCiAgICAgICAgJ3NhbWUgd2F5LicpOwogIH0KCiAgaWYgKGZvcm1hdHRlZE5hTiA9PT0gZm9ybWF0dGVkTmVnYXRpdmVJbmZpbml0eSkgewogICAgJEVSUk9SKCdJbnRsLk51bWJlckZvcm1hdCBmb3JtYXRzIE5hTiBhbmQgbmVnYXRpdmUgJyArCiAgICAgICAgJ0luZmluaXR5IHRoZSBzYW1lIHdheS4nKTsKICB9CgogIGlmIChmb3JtYXR0ZWRJbmZpbml0eSA9PT0gZm9ybWF0dGVkTmVnYXRpdmVJbmZpbml0eSkgewogICAgJEVSUk9SKCdJbnRsLk51bWJlckZvcm1hdCBmb3JtYXRzIEluZmluaXR5IGFuZCAnICsKICAgICAgICAnbmVnYWl2ZSBJbmZpbml0eSB0aGUgc2FtZSB3YXkuJyk7CiAgfQoKICBpZiAoaGFzVW5pY29kZURpZ2l0cy50ZXN0KGZvcm1hdHRlZE5hTikpIHsKICAgICRFUlJPUignSW50bC5OdW1iZXJGb3JtYXQgZm9ybWF0cyBOYU4gdXNpbmcgYSBkaWdpdC4nKTsKICB9CgogIGlmIChoYXNVbmljb2RlRGlnaXRzLnRlc3QoZm9ybWF0dGVkSW5maW5pdHkpKSB7CiAgICAkRVJST1IoJ0ludGwuTnVtYmVyRm9ybWF0IGZvcm1hdHMgSW5maW5pdHkgdXNpbmcgYSAnICsKICAgICAgICAnZGlnaXQuJyk7CiAgfQoKICBpZiAoaGFzVW5pY29kZURpZ2l0cy50ZXN0KGZvcm1hdHRlZE5lZ2F0aXZlSW5maW5pdHkpKSB7CiAgICAkRVJST1IoJ0ludGwuTnVtYmVyRm9ybWF0IGZvcm1hdHMgbmVnYXRpdmUgSW5maW5pdHkgJyArIAogICAgICAgICd1c2luZyBhIGRpZ2l0LicpOwogIH0KCiAgcmV0dXJuIHRydWU7Cn0KcnVuVGVzdENhc2UodGVzdGNhc2UpOwo=","commentary":"","description":"Tests that Intl.NumberFormat.prototype.format\nhangles NaN, Infinity, and -Infinity properly.","path":"TestCases/intl402/ch12/12.3/12.3.2_4.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAcGF0aCBpbnRsNDAyL2NoMTIvMTIuMy8xMi4zLjJfNV9iLmpzCiAqIEBkZXNjcmlwdGlvbiBUZXN0cyB0aGF0IEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQKICogZm9ybWF0cyBwZXJjZW50IHZhbHVlcyBwcm9wZXJseS4KICogQGF1dGhvcjogUm9vemJlaCBQb3VybmFkZXIKICovCgp2YXIgdGVzdGNhc2UgPSBmdW5jdGlvbigpIHsKICAidXNlIHN0cmljdCI7CgogIHZhciBudW1iZXJGb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKTsKICB2YXIgcGVyY2VudEZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCh1bmRlZmluZWQsIHtzdHlsZTogJ3BlcmNlbnQnfSk7CgogIHZhciBmb3JtYXR0ZWRUd2VudHkgPSBudW1iZXJGb3JtYXR0ZXIuZm9ybWF0KDIwKTsKICB2YXIgZm9ybWF0dGVkVHdlbnR5UGVyY2VudCA9IHBlcmNlbnRGb3JtYXR0ZXIuZm9ybWF0KDAuMjApOwoKICAvLyBGSVhNRTogTWF5IG5vdCB3b3JrIGZvciBzb21lIHRoZW9yZXRpY2FsIGxvY2FsZXMgd2hlcmUgcGVyY2VudHMgYW5kCiAgLy8gbm9ybWFsIG51bWJlcnMgYXJlIGZvcm1hdHRlZCB1c2luZyBkaWZmZXJlbnQgbnVtYmVyaW5nIHN5c3RlbXMuCiAgaWYgKGZvcm1hdHRlZFR3ZW50eVBlcmNlbnQuaW5kZXhPZihmb3JtYXR0ZWRUd2VudHkpID09PSAtMSkgewogICAgJEVSUk9SKCJJbnRsLk51bWJlckZvcm1hdCdzIGZvcm1hdHRpbmcgb2YgMjAlIGRvZXMgbm90IGluY2x1ZGUgYSAiICsKICAgICAgICAiZm9ybWF0dGluZyBvZiAyMCBhcyBhIHN1YnN0cmluZy4iKTsKICB9CgogIC8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8gc29tZXdoZXJlIGFwcHJvcHJpYXRlCiAgaWYgKHBlcmNlbnRGb3JtYXR0ZXIuZm9ybWF0KDAuMDExKSA9PT0gcGVyY2VudEZvcm1hdHRlci5mb3JtYXQoMC4wMikpIHsKICAgICRFUlJPUignSW50bC5OdW1iZXJGb3JtYXQgaXMgZm9ybWF0dGluZyAxLjElIGFuZCAyJSB0aGUgc2FtZSB3YXkuJyk7CiAgfQoKICByZXR1cm4gdHJ1ZTsKfQpydW5UZXN0Q2FzZSh0ZXN0Y2FzZSk7Cg==","commentary":"","description":"Tests that Intl.NumberFormat.prototype.format\nformats percent values properly.","path":"TestCases/intl402/ch12/12.3/12.3.2_5_b.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAcGF0aCBpbnRsNDAyL2NoMTIvMTIuMy8xMi4zLjJfNV9lLmpzCiAqIEBkZXNjcmlwdGlvbiBUZXN0cyB0aGF0IEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQKICogc3VwcG9ydHMgYWxsIGFsdGVybmF0aXZlIG51bWJlcmluZyBzeXN0ZW1zLgogKiBAYXV0aG9yOiBSb296YmVoIFBvdXJuYWRlcgogKi8KCnZhciB0ZXN0Y2FzZSA9IGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKCiAgdmFyIG51bWJlcmluZ1N5c3RlbXMgPSB7CiAgICBhcmFiOiAweDA2NjAsCiAgICBhcmFiZXh0OiAweDA2RjAsCiAgICBiZW5nOiAweDA5RTYsCiAgICBkZXZhOiAweDA5NjYsCiAgICBmdWxsd2lkZTogMHhGRjEwLAogICAgZ3VqcjogMHgwQUU2LAogICAgZ3VydTogMHgwQTY2LAogICAgaGFuaWRlYzogWzB4MzAwNywgMHg0RTAwLCAweDRFOEMsIDB4NEUwOSwgMHg1NkRCLAogICAgICAgICAgICAgIDB4NEU5NCwgMHg1MTZELCAweDRFMDMsIDB4NTE2QiwgMHg0RTVEXSwKICAgIGtobXI6IDB4MTdFMCwKICAgIGtuZGE6IDB4MENFNiwKICAgIGxhb286IDB4MEVEMCwKICAgIGxhdG46IDB4MDAzMCwKICAgIG1seW06IDB4MEQ2NiwKICAgIG1vbmc6IDB4MTgxMCwKICAgIG15bXI6IDB4MTA0MCwKICAgIG9yeWE6IDB4MEI2NiwKICAgIHRhbWxkZWM6IDB4MEJFNiwKICAgIHRlbHU6IDB4MEM2NiwKICAgIHRoYWk6IDB4MEU1MCwKICAgIHRpYnQ6IDB4MEYyMAogIH07CgogIHZhciBvcHRpb25zLCBmb3JtYXR0ZXI7CiAgdmFyIHMsIHplcm9Db2RlLCBkaWdpdExpc3Q7CgogIGZvciAocyBpbiBudW1iZXJpbmdTeXN0ZW1zKSB7CiAgICB6ZXJvQ29kZSA9IG51bWJlcmluZ1N5c3RlbXNbc107CiAgICBpZiAodHlwZW9mIHplcm9Db2RlID09PSAnbnVtYmVyJykgewogICAgICBkaWdpdExpc3QgPSBbemVyb0NvZGUsIHplcm9Db2RlKzEsIHplcm9Db2RlKzIsIHplcm9Db2RlKzMsIHplcm9Db2RlKzQsCiAgICAgICAgICAgICAgICAgICB6ZXJvQ29kZSs1LCB6ZXJvQ29kZSs2LCB6ZXJvQ29kZSs3LCB6ZXJvQ29kZSs4LCB6ZXJvQ29kZSs5XTsKICAgICAgbnVtYmVyaW5nU3lzdGVtc1tzXSA9IGRpZ2l0TGlzdDsKICAgIH0KICB9CgogIC8vIEZJWE1FOiBVbmZpbmlzaGVkCgogIHJldHVybiB0cnVlOwp9CnJ1blRlc3RDYXNlKHRlc3RjYXNlKTsK","commentary":"","description":"Tests that Intl.NumberFormat.prototype.format\nsupports all alternative numbering systems.","path":"TestCases/intl402/ch12/12.3/12.3.2_5_e.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAcGF0aCBpbnRsNDAyL2NoMTIvMTIuMy8xMi4zLmpzCiAqIEBkZXNjcmlwdGlvbiBUZXN0cyB0aGF0IEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZSBpcyBhbiBpbnRhbmNlIG9mCiAqIEludGwuTnVtYmVyRm9ybWF0LgogKiBAYXV0aG9yOiBSb296YmVoIFBvdXJuYWRlcgogKi8KCnZhciB0ZXN0Y2FzZSA9IGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKCiAgaWYgKCEoSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlIGluc3RhbmNlb2YgSW50bC5OdW1iZXJGb3JtYXQpKSB7CiAgICAkRVJST1IoIkludGwuTnVtYmVyRm9ybWF0J3MgcHJvdG90eXBlIGlzIG5vdCBhbiBpbnN0YW5jZSBvZiAiICsKICAgICAgIkludGwuTnVtYmVyRm9ybWF0Iik7CiAgfQogIAogIHJldHVybiB0cnVlOwp9CnJ1blRlc3RDYXNlKHRlc3RjYXNlKTsK","commentary":"","description":"Tests that Intl.NumberFormat.prototype is an intance of\nIntl.NumberFormat.","path":"TestCases/intl402/ch12/12.3/12.3.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAcGF0aCBpbnRsNDAyL2NoMTMvMTMuMi8xMy4yLjEuanMKICogQGRlc2NyaXB0aW9uIFRlc3RzIHRoYXQgdGhlIEludGwuRGF0ZVRpbWVGb3JtYXQgcHJvdG90eXBlIG9iamVjdCBleGlzdHMgYW5kCiAqIGlzIG5vdCB3cml0YWJsZSwgZW51bWVyYWJsZSwgb3IgY29uZmlndXJhYmxlLgogKiBAYXV0aG9yOiBSb296YmVoIFBvdXJuYWRlcgogKi8KCnZhciB0ZXN0Y2FzZSA9IGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKCiAgdmFyIGRlc2M7CgogIGlmICghSW50bC5EYXRlVGltZUZvcm1hdC5oYXNPd25Qcm9wZXJ0eSgncHJvdG90eXBlJykpIHsKICAgICRFUlJPUignSW50bC5EYXRlVGltZUZvcm1hdCBoYXMgbm8gcHJvdG90eXBlIHByb3BlcnR5Jyk7CiAgfQoKICBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LCAncHJvdG90eXBlJyk7CiAgaWYgKGRlc2Mud3JpdGFibGUgPT09IHRydWUpIHsKICAgICRFUlJPUignSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUgaXMgd3JpdGFibGUuJyk7CiAgfQogIGlmIChkZXNjLmVudW1lcmFibGUgPT09IHRydWUpIHsKICAgICRFUlJPUignSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUgaXMgZW51bWVyYWJsZS4nKTsKICB9CiAgaWYgKGRlc2MuY29uZmlndXJhYmxlID09PSB0cnVlKSB7CiAgICAkRVJST1IoJ0ludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlIGlzIGNvbmZpZ3VyYWJsZS4nKTsKICB9CgogIHJldHVybiB0cnVlOwp9CnJ1blRlc3RDYXNlKHRlc3RjYXNlKTsK","commentary":"","description":"Tests that the Intl.DateTimeFormat prototype object exists and\nis not writable, enumerable, or configurable.","path":"TestCases/intl402/ch13/13.2/13.2.1.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAcGF0aCBpbnRsNDAyL2NoMTMvMTMuMi8xMy4yLjIuanMKICogQGRlc2NyaXB0aW9uIFRlc3RzIHRoYXQgdGhlIEludGwuRGF0ZVRpbWVGb3JtYXQgaGFzIGEgc3VwcG9ydGVkTG9jYWxlc09mCiAqIHByb3BlcnR5LCBhbmQgaXQgd29ya3MgYXMgcGxhbm5lZC4KICogQGF1dGhvcjogUm9vemJlaCBQb3VybmFkZXIKICovCgp2YXIgdGVzdGNhc2UgPSBmdW5jdGlvbigpIHsKICAidXNlIHN0cmljdCI7CgogIHZhciBzdXBwb3J0ZWQgPSAobmV3IEludGwuTG9jYWxlTGlzdCgpKVswXTsKICB2YXIgbm90U3VwcG9ydGVkID0gJ3p4eCc7CiAgdmFyIHJlcXVlc3RlZExvY2FsZXMgPSBbc3VwcG9ydGVkLCBub3RTdXBwb3J0ZWRdOwogICAgCiAgdmFyIHN1cHBvcnRlZExvY2FsZXM7CgogIGlmICghSW50bC5EYXRlVGltZUZvcm1hdC5oYXNPd25Qcm9wZXJ0eSgnc3VwcG9ydGVkTG9jYWxlc09mJykpIHsKICAgICRFUlJPUigiSW50bC5EYXRlVGltZUZvcm1hdCBkb2Vzbid0IGhhdmUgYSBzdXBwb3J0ZWRMb2NhbGVzT2YgcHJvcGVydHkuIik7CiAgfQogICAgCiAgc3VwcG9ydGVkTG9jYWxlcyA9IEludGwuRGF0ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKHJlcXVlc3RlZExvY2FsZXMpOwogIGlmIChzdXBwb3J0ZWRMb2NhbGVzLmxlbmd0aCAhPT0gMSkgewogICAgJEVSUk9SKCdUaGUgbGVuZ3RoIG9mIHN1cHBvcnRlZCBsb2NhbGVzIGxpc3QgaXMgbm90IDEuJyk7CiAgfQogICAgCiAgaWYgKHN1cHBvcnRlZExvY2FsZXNbMF0gIT09IHN1cHBvcnRlZCkgewogICAgJEVSUk9SKCdUaGUgc3VwcG9ydGVkIGxvY2FsZSBpcyBub3QgcmV0dXJuZWQgaW4gdGhlIHN1cHBvcnRlZCBsaXN0LicpOwogIH0KICAgIAogIHJldHVybiB0cnVlOwp9CnJ1blRlc3RDYXNlKHRlc3RjYXNlKTsK","commentary":"","description":"Tests that the Intl.DateTimeFormat has a supportedLocalesOf\nproperty, and it works as planned.","path":"TestCases/intl402/ch13/13.2/13.2.2.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAcGF0aCBpbnRsNDAyL2NoMTMvMTMuMi8xMy4yLjMuanMKICogQGRlc2NyaXB0aW9uIFRlc3RzIHRoZSBpbnRlcm5hbCBwcm9wZXJ0aWVzIG9mIEludGwuRGF0ZVRpbWVGb3JtYXQKICogQGF1dGhvcjogUm9vemJlaCBQb3VybmFkZXIKICovCgp2YXIgdGVzdGNhc2UgPSBmdW5jdGlvbigpIHsKICAidXNlIHN0cmljdCI7CgogIHZhciBkZWZhdWx0TG9jYWxlID0gKG5ldyBJbnRsLkxvY2FsZUxpc3QoKSlbMF07CiAgdmFyIHN1cHBvcnRlZExvY2FsZXMgPSBJbnRsLkRhdGVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZihbZGVmYXVsdExvY2FsZV0pOwogIAogIGlmIChzdXBwb3J0ZWRMb2NhbGVzLmxlbmd0aCA8IDEgfHwgc3VwcG9ydGVkTG9jYWxlc1swXSAhPSBkZWZhdWx0TG9jYWxlKSB7CiAgICAkRVJST1IoJ1RoZSBkZWZhdWx0IExvY2FsZSBpcyBub3Qgc3VwcG9ydGVkIGJ5IEludGwuRGF0ZVRpbWVGb3JtYXQnKTsKICB9CgogIC8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIGNoZWNrIHRoYXQgW1tyZWxldmFudEV4dGVuc2lvbktleXNdXSA9PT0gWydjYScsICdudSddCiAgCiAgLy8gRklYTUU6IEZpbmQgYSB3YXkgdG8gY2hlY2sgc3BlY2lmaWVkIHByb3BlcnRpZXMgb2YgW1tsb2NhbGVEYXRhXV0gIAogIAogIHJldHVybiB0cnVlOwp9CnJ1blRlc3RDYXNlKHRlc3RjYXNlKTsK","commentary":"","description":"Tests the internal properties of Intl.DateTimeFormat","path":"TestCases/intl402/ch13/13.2/13.2.3.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAcGF0aCBpbnRsNDAyL2NoMTMvMTMuMi8xMy4yLmpzCiAqIEBkZXNjcmlwdGlvbiBUZXN0cyB0aGF0IHRoZSBJbnRsLkRhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yIGhhcyBhIGxlbmd0aAogKiBwcm9wZXJ0eSB0aGF0IGVxdWFscyAyLgogKiBAYXV0aG9yOiBSb296YmVoIFBvdXJuYWRlcgogKi8KCnZhciB0ZXN0Y2FzZSA9IGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKCiAgaWYgKCFJbnRsLkRhdGVUaW1lRm9ybWF0Lmhhc093blByb3BlcnR5KCdsZW5ndGgnKSkgewogICAgJEVSUk9SKCdJbnRsLkRhdGVUaW1lRm9ybWF0IGhhcyBubyBsZW5ndGggcHJvcGVydHknKTsKICB9CiAgICAKICBpZiAoSW50bC5EYXRlVGltZUZvcm1hdC5sZW5ndGggIT0gMikgewogICAgJEVSUk9SKCdJbnRsLkRhdGVUaW1lRm9ybWF0Lmxlbmd0aCBpcyBub3QgMi4nKTsKICB9CiAgICAKICByZXR1cm4gdHJ1ZTsKfQpydW5UZXN0Q2FzZSh0ZXN0Y2FzZSk7Cg==","commentary":"","description":"Tests that the Intl.DateTimeFormat constructor has a length\nproperty that equals 2.","path":"TestCases/intl402/ch13/13.2/13.2.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAcGF0aCBpbnRsNDAyL2NoMTMvMTMuMy8xMy4zLjEuanMKICogQGRlc2NyaXB0aW9uIFRlc3RzIHRoYXQgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuY29uc3RydWN0b3IgaXMgdGhlCiAqIEludGwuRGF0ZVRpbWVGb3JtYXQuCiAqIEBhdXRob3I6IFJvb3piZWggUG91cm5hZGVyCiAqLwoKdmFyIHRlc3RjYXNlID0gZnVuY3Rpb24oKSB7CiAgInVzZSBzdHJpY3QiOwoKICBpZiAoSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuY29uc3RydWN0b3IgIT09IEludGwuRGF0ZVRpbWVGb3JtYXQpIHsKICAgICRFUlJPUigiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuY29uc3RydWN0b3IgaXMgbm90IHRoZSBzYW1lIGFzICIKICAgICAgICAgICsiSW50bC5EYXRlVGltZUZvcm1hdCIpOwogIH0KICAKICByZXR1cm4gdHJ1ZTsKfQpydW5UZXN0Q2FzZSh0ZXN0Y2FzZSk7Cg==","commentary":"","description":"Tests that Intl.DateTimeFormat.prototype.constructor is the\nIntl.DateTimeFormat.","path":"TestCases/intl402/ch13/13.3/13.3.1.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAcGF0aCBpbnRsNDAyL2NoMTMvMTMuMy8xMy4zLmpzCiAqIEBkZXNjcmlwdGlvbiBUZXN0cyB0aGF0IEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlIGlzIGFuIGludGFuY2Ugb2YKICogSW50bC5EYXRlVGltZUZvcm1hdC4KICogQGF1dGhvcjogUm9vemJlaCBQb3VybmFkZXIKICovCgp2YXIgdGVzdGNhc2UgPSBmdW5jdGlvbigpIHsKICAidXNlIHN0cmljdCI7CgogIGlmICghKEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlIGluc3RhbmNlb2YgSW50bC5EYXRlVGltZUZvcm1hdCkpIHsKICAgICRFUlJPUigiSW50bC5EYXRlVGltZUZvcm1hdCdzIHByb3RvdHlwZSBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgIiArCiAgICAgICJJbnRsLkRhdGVUaW1lRm9ybWF0Iik7CiAgfQogIAogIHJldHVybiB0cnVlOwp9CnJ1blRlc3RDYXNlKHRlc3RjYXNlKTsK","commentary":"","description":"Tests that Intl.DateTimeFormat.prototype is an intance of\nIntl.DateTimeFormat.","path":"TestCases/intl402/ch13/13.3/13.3.js"}]}} \ No newline at end of file +{"testsCollection":{"name":"Chapter - intl402","numTests":"25","tests":[{"code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLyoqCiAqIEBkZXNjcmlwdGlvbiBUZXN0cyBwcm9wZXJ0aWVzIG9mIEludGwgb2JqZWN0LgogKi8KCi8vIFdlIGtlZXAgSW50bCBleHRlbnNpYmxlIGFuZCBub3QgZnJvemVuLgppZiAoT2JqZWN0LmlzRnJvemVuKEludGwpID09PSB0cnVlKSB7CiAgICAkRVJST1IoJ2lzRnJvemVuKEludGwpIHJldHVybnMgdHJ1ZS4nKTsKfQoKaWYgKE9iamVjdC5pc0V4dGVuc2libGUoSW50bCkgPT09IGZhbHNlKSB7CiAgICAkRVJST1IoJ2lzRXh0ZW5zaWJsZShJbnRsKSByZXR1cm5zIGZhbHNlLicpOwp9Cgp2YXIgZmFsc2V5OwoKLy8gSW50bCBjYW4ndCBiZSBjb25zdHJ1Y3RlZC4KdHJ5IHsKICAgIGZhbHNleSA9IG5ldyBJbnRsKCk7Cn0gY2F0Y2ggKGUpIHsKfQoKaWYgKCEhZmFsc2V5KSB7CiAgICAkRVJST1IoJ0ludGwgb2JqZWN0IHNob3VsZCBub3QgYmUgY29uc3RydWN0YWJsZS4nKTsKfQoKLy8gSW50bCBjYW4ndCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4KdHJ5IHsKICAgIC8qanNoaW50IG5ld2NhcDpmYWxzZSovCiAgICBmYWxzZXkgPSBJbnRsKCk7Cn0gY2F0Y2ggKGUpIHsKfQoKaWYgKCEhZmFsc2V5KSB7CiAgICAkRVJST1IoJ0ludGwgc2hvdWxkIG5vdCBiZSBjYWxsYWJsZS4nKTsKfQoK","commentary":"","description":"Tests properties of Intl object.","path":"TestCases/intl402/ch08/8.0/8.0.js"},{"code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLyoqCiAqIEBkZXNjcmlwdGlvbiBUZXN0cyB0aGF0IEludGwgb2JqZWN0IGhhcyBwcm9wZXIgY29uc3RydWN0b3JzLgogKi8KCmlmIChJbnRsID09PSB1bmRlZmluZWQpIHsKICAgICRFUlJPUignSW50bCBvYmplY3QgaXMgdW5kZWZpbmVkLicpOwp9CgppZiAodHlwZW9mIEludGwuQ29sbGF0b3IgIT09ICdmdW5jdGlvbicpIHsKICAgICRFUlJPUignSW50bC5Db2xsYXRvciBpcyBub3QgYSBmdW5jdGlvbi4nKTsKfQoKaWYgKHR5cGVvZiBJbnRsLk51bWJlckZvcm1hdCAhPT0gJ2Z1bmN0aW9uJykgewogICAgJEVSUk9SKCdJbnRsLk51bWJlckZvcm1hdCBpcyBub3QgYSBmdW5jdGlvbi4nKTsKfQoKaWYgKHR5cGVvZiBJbnRsLkRhdGVUaW1lRm9ybWF0ICE9PSAnZnVuY3Rpb24nKSB7CiAgICAkRVJST1IoJ0ludGwuRGF0ZVRpbWVGb3JtYXQgaXMgbm90IGEgZnVuY3Rpb24uJyk7Cn0KCg==","commentary":"","description":"Tests that Intl object has proper constructors.","path":"TestCases/intl402/ch08/8.1/8.1.js"},{"code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAZGVzY3JpcHRpb24gVGVzdHMgdGhhdCB0aGUgSW50bC5Db2xsYXRvciBwcm90b3R5cGUgb2JqZWN0IGV4aXN0cyBhbmQKICogaXMgbm90IHdyaXRhYmxlLCBlbnVtZXJhYmxlLCBvciBjb25maWd1cmFibGUuCiAqLwoKdmFyIGRlc2M7CgppZiAoIUludGwuQ29sbGF0b3IuaGFzT3duUHJvcGVydHkoJ3Byb3RvdHlwZScpKSB7CiAgICAkRVJST1IoJ0ludGwuQ29sbGF0b3IgaGFzIG5vIHByb3RvdHlwZSBwcm9wZXJ0eScpOwp9CgpkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLCAncHJvdG90eXBlJyk7CmlmIChkZXNjLndyaXRhYmxlID09PSB0cnVlKSB7CiAgICAkRVJST1IoJ0ludGwuQ29sbGF0b3IucHJvdG90eXBlIGlzIHdyaXRhYmxlLicpOwp9CmlmIChkZXNjLmVudW1lcmFibGUgPT09IHRydWUpIHsKICAgICRFUlJPUignSW50bC5Db2xsYXRvci5wcm90b3R5cGUgaXMgZW51bWVyYWJsZS4nKTsKfQppZiAoZGVzYy5jb25maWd1cmFibGUgPT09IHRydWUpIHsKICAgICRFUlJPUignSW50bC5Db2xsYXRvci5wcm90b3R5cGUgaXMgY29uZmlndXJhYmxlLicpOwp9Cgo=","commentary":"","description":"Tests that the Intl.Collator prototype object exists and\nis not writable, enumerable, or configurable.","path":"TestCases/intl402/ch11/11.2/11.2.1.js"},{"code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAZGVzY3JpcHRpb24gVGVzdHMgdGhhdCBJbnRsLkNvbGxhdG9yIGhhcyBhIHN1cHBvcnRlZExvY2FsZXNPZgogKiBwcm9wZXJ0eSwgYW5kIGl0IHdvcmtzIGFzIHBsYW5uZWQuCiAqLwoKdmFyIGRlZmF1bHRMb2NhbGUgPSBuZXcgSW50bC5Db2xsYXRvcigpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZTsKdmFyIG5vdFN1cHBvcnRlZCA9ICd6eHgnOyAvLyAibm8gbGluZ3Vpc3RpYyBjb250ZW50Igp2YXIgcmVxdWVzdGVkTG9jYWxlcyA9IFtkZWZhdWx0TG9jYWxlLCBub3RTdXBwb3J0ZWRdOwoKdmFyIHN1cHBvcnRlZExvY2FsZXM7CgppZiAoIUludGwuQ29sbGF0b3IuaGFzT3duUHJvcGVydHkoJ3N1cHBvcnRlZExvY2FsZXNPZicpKSB7CiAgICAkRVJST1IoIkludGwuQ29sbGF0b3IgZG9lc24ndCBoYXZlIGEgc3VwcG9ydGVkTG9jYWxlc09mIHByb3BlcnR5LiIpOwp9CgpzdXBwb3J0ZWRMb2NhbGVzID0gSW50bC5Db2xsYXRvci5zdXBwb3J0ZWRMb2NhbGVzT2YocmVxdWVzdGVkTG9jYWxlcyk7CmlmIChzdXBwb3J0ZWRMb2NhbGVzLmxlbmd0aCAhPT0gMSkgewogICAgJEVSUk9SKCdUaGUgbGVuZ3RoIG9mIHN1cHBvcnRlZCBsb2NhbGVzIGxpc3QgaXMgbm90IDEuJyk7Cn0KCmlmIChzdXBwb3J0ZWRMb2NhbGVzWzBdICE9PSBkZWZhdWx0TG9jYWxlKSB7CiAgICAkRVJST1IoJ1RoZSBkZWZhdWx0IGxvY2FsZSBpcyBub3QgcmV0dXJuZWQgaW4gdGhlIHN1cHBvcnRlZCBsaXN0LicpOwp9Cgo=","commentary":"","description":"Tests that Intl.Collator has a supportedLocalesOf\nproperty, and it works as planned.","path":"TestCases/intl402/ch11/11.2/11.2.2.js"},{"code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAZGVzY3JpcHRpb24gVGVzdHMgdGhlIGludGVybmFsIHByb3BlcnRpZXMgb2YgSW50bC5Db2xsYXRvci4KICovCgp2YXIgZGVmYXVsdExvY2FsZSA9IG5ldyBJbnRsLkNvbGxhdG9yKFtdKS5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGU7CnZhciBzdXBwb3J0ZWRMb2NhbGVzID0gSW50bC5Db2xsYXRvci5zdXBwb3J0ZWRMb2NhbGVzT2YoW2RlZmF1bHRMb2NhbGVdKTsKCmlmIChzdXBwb3J0ZWRMb2NhbGVzLmxlbmd0aCA8IDEgfHwgc3VwcG9ydGVkTG9jYWxlc1swXSAhPT0gZGVmYXVsdExvY2FsZSkgewogICAgJEVSUk9SKCdUaGUgZGVmYXVsdCBsb2NhbGUgaXMgbm90IHN1cHBvcnRlZCBieSBJbnRsLkNvbGxhdG9yJyk7Cn0KCi8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIGNoZWNrIFtbcmVsZXZhbnRFeHRlbnNpb25LZXlzXV0KCi8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIGNoZWNrIHNwZWNpZmllZCBwcm9wZXJ0aWVzIG9mIFtbbG9jYWxlRGF0YV1dCgo=","commentary":"","description":"Tests the internal properties of Intl.Collator.","path":"TestCases/intl402/ch11/11.2/11.2.3.js"},{"code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAZGVzY3JpcHRpb24gVGVzdHMgdGhhdCB0aGUgSW50bC5Db2xsYXRvciBjb25zdHJ1Y3RvciBoYXMgYSBsZW5ndGgKICogcHJvcGVydHkgdGhhdCBlcXVhbHMgMi4KICovCgppZiAoIUludGwuQ29sbGF0b3IuaGFzT3duUHJvcGVydHkoJ2xlbmd0aCcpKSB7CiAgICAkRVJST1IoJ0ludGwuQ29sbGF0b3IgaGFzIG5vIGxlbmd0aCBwcm9wZXJ0eScpOwp9CgppZiAoSW50bC5Db2xsYXRvci5sZW5ndGggIT0gMikgewogICAgJEVSUk9SKCdJbnRsLkNvbGxhdG9yLmxlbmd0aCBpcyBub3QgMi4nKTsKfQoK","commentary":"","description":"Tests that the Intl.Collator constructor has a length\nproperty that equals 2.","path":"TestCases/intl402/ch11/11.2/11.2.js"},{"code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAZGVzY3JpcHRpb24gVGVzdHMgdGhhdCBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciBpcyB0aGUKICogSW50bC5Db2xsYXRvci4KICovCgppZiAoSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29uc3RydWN0b3IgIT09IEludGwuQ29sbGF0b3IpIHsKICAgICRFUlJPUigiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29uc3RydWN0b3IgaXMgbm90IHRoZSBzYW1lIGFzICIgKwogICAgICAgICAgICJJbnRsLkNvbGxhdG9yIik7Cn0KCg==","commentary":"","description":"Tests that Intl.Collator.prototype.constructor is the\nIntl.Collator.","path":"TestCases/intl402/ch11/11.3/11.3.1.js"},{"code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAZGVzY3JpcHRpb24gVGVzdHMgdGhhdCBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZSBpcyBhbiBvYmplY3QgdGhhdAogKiBoYXMgYmVlbiBpbml0aWFsaXplZCBhcyBhbiBJbnRsLkNvbGxhdG9yLgogKi8KCi8vIHRlc3QgYnkgY2FsbGluZyBhIGZ1bmN0aW9uIHRoYXQgd291bGQgZmFpbCBpZiAidGhpcyIgd2VyZSBub3QgYW4gb2JqZWN0Ci8vIGluaXRpYWxpemVkIGFzIGFuIEludGwuQ29sbGF0b3IKaWYgKEludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUoImHQsOOBguyVhCIsICJh0LDjgYLslYQiKSAhPT0gMCkgewogICAgJEVSUk9SKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZSBpcyBub3QgYW4gb2JqZWN0IHRoYXQgaGFzIGJlZW4gIiArCiAgICAgICAgImluaXRpYWxpemVkIGFzIGFuIEludGwuQ29sbGF0b3IuIik7Cn0KCg==","commentary":"","description":"Tests that Intl.Collator.prototype is an object that\nhas been initialized as an Intl.Collator.","path":"TestCases/intl402/ch11/11.3/11.3.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAZGVzY3JpcHRpb24gVGVzdHMgdGhhdCB0aGUgSW50bC5OdW1iZXJGb3JtYXQgcHJvdG90eXBlIG9iamVjdCBleGlzdHMgYW5kCiAqIGlzIG5vdCB3cml0YWJsZSwgZW51bWVyYWJsZSwgb3IgY29uZmlndXJhYmxlLgogKiBAYXV0aG9yOiBSb296YmVoIFBvdXJuYWRlcgogKi8KCnZhciBkZXNjOwoKaWYgKCFJbnRsLk51bWJlckZvcm1hdC5oYXNPd25Qcm9wZXJ0eSgncHJvdG90eXBlJykpIHsKICAgICRFUlJPUignSW50bC5OdW1iZXJGb3JtYXQgaGFzIG5vIHByb3RvdHlwZSBwcm9wZXJ0eScpOwp9CgpkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLk51bWJlckZvcm1hdCwgJ3Byb3RvdHlwZScpOwppZiAoZGVzYy53cml0YWJsZSA9PT0gdHJ1ZSkgewogICAgJEVSUk9SKCdJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUgaXMgd3JpdGFibGUuJyk7Cn0KaWYgKGRlc2MuZW51bWVyYWJsZSA9PT0gdHJ1ZSkgewogICAgJEVSUk9SKCdJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUgaXMgZW51bWVyYWJsZS4nKTsKfQppZiAoZGVzYy5jb25maWd1cmFibGUgPT09IHRydWUpIHsKICAgICRFUlJPUignSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlIGlzIGNvbmZpZ3VyYWJsZS4nKTsKfQoK","commentary":"","description":"Tests that the Intl.NumberFormat prototype object exists and\nis not writable, enumerable, or configurable.","path":"TestCases/intl402/ch12/12.2/12.2.1.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAZGVzY3JpcHRpb24gVGVzdHMgdGhhdCBJbnRsLk51bWJlckZvcm1hdCBoYXMgYSBzdXBwb3J0ZWRMb2NhbGVzT2YKICogcHJvcGVydHksIGFuZCBpdCB3b3JrcyBhcyBwbGFubmVkLgogKiBAYXV0aG9yOiBSb296YmVoIFBvdXJuYWRlcgogKi8KCnZhciBkZWZhdWx0TG9jYWxlID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlOwp2YXIgbm90U3VwcG9ydGVkID0gJ3p4eCc7IC8vICJubyBsaW5ndWlzdGljIGNvbnRlbnQiCnZhciByZXF1ZXN0ZWRMb2NhbGVzID0gW2RlZmF1bHRMb2NhbGUsIG5vdFN1cHBvcnRlZF07CiAgICAKdmFyIHN1cHBvcnRlZExvY2FsZXM7CgppZiAoIUludGwuTnVtYmVyRm9ybWF0Lmhhc093blByb3BlcnR5KCdzdXBwb3J0ZWRMb2NhbGVzT2YnKSkgewogICAgJEVSUk9SKCJJbnRsLk51bWJlckZvcm1hdCBkb2Vzbid0IGhhdmUgYSBzdXBwb3J0ZWRMb2NhbGVzT2YgcHJvcGVydHkuIik7Cn0KICAgIApzdXBwb3J0ZWRMb2NhbGVzID0gSW50bC5OdW1iZXJGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKHJlcXVlc3RlZExvY2FsZXMpOwppZiAoc3VwcG9ydGVkTG9jYWxlcy5sZW5ndGggIT09IDEpIHsKICAgICRFUlJPUignVGhlIGxlbmd0aCBvZiBzdXBwb3J0ZWQgbG9jYWxlcyBsaXN0IGlzIG5vdCAxLicpOwp9CiAgICAKaWYgKHN1cHBvcnRlZExvY2FsZXNbMF0gIT09IGRlZmF1bHRMb2NhbGUpIHsKICAgICRFUlJPUignVGhlIGRlZmF1bHQgbG9jYWxlIGlzIG5vdCByZXR1cm5lZCBpbiB0aGUgc3VwcG9ydGVkIGxpc3QuJyk7Cn0KCg==","commentary":"","description":"Tests that Intl.NumberFormat has a supportedLocalesOf\nproperty, and it works as planned.","path":"TestCases/intl402/ch12/12.2/12.2.2.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAZGVzY3JpcHRpb24gVGVzdHMgdGhlIGludGVybmFsIHByb3BlcnRpZXMgb2YgSW50bC5OdW1iZXJGb3JtYXQuCiAqIEBhdXRob3I6IFJvb3piZWggUG91cm5hZGVyCiAqLwoKdmFyIGRlZmF1bHRMb2NhbGUgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoW10pLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZTsKdmFyIHN1cHBvcnRlZExvY2FsZXMgPSBJbnRsLk51bWJlckZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoW2RlZmF1bHRMb2NhbGVdKTsKICAKaWYgKHN1cHBvcnRlZExvY2FsZXMubGVuZ3RoIDwgMSB8fCBzdXBwb3J0ZWRMb2NhbGVzWzBdICE9PSBkZWZhdWx0TG9jYWxlKSB7CiAgICAkRVJST1IoJ1RoZSBkZWZhdWx0IGxvY2FsZSBpcyBub3Qgc3VwcG9ydGVkIGJ5IEludGwuTnVtYmVyRm9ybWF0Jyk7Cn0KCi8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIGNoZWNrIHRoYXQgW1tyZWxldmFudEV4dGVuc2lvbktleXNdXSA9PT0gWydudSddCiAgCi8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIGNoZWNrIHNwZWNpZmllZCBwcm9wZXJ0aWVzIG9mIFtbbG9jYWxlRGF0YV1dICAKCg==","commentary":"","description":"Tests the internal properties of Intl.NumberFormat.","path":"TestCases/intl402/ch12/12.2/12.2.3.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAZGVzY3JpcHRpb24gVGVzdHMgdGhhdCB0aGUgSW50bC5OdW1iZXJGb3JtYXQgY29uc3RydWN0b3IgaGFzIGEgbGVuZ3RoCiAqIHByb3BlcnR5IHRoYXQgZXF1YWxzIDIuCiAqIEBhdXRob3I6IFJvb3piZWggUG91cm5hZGVyCiAqLwoKaWYgKCFJbnRsLk51bWJlckZvcm1hdC5oYXNPd25Qcm9wZXJ0eSgnbGVuZ3RoJykpIHsKICAgICRFUlJPUignSW50bC5OdW1iZXJGb3JtYXQgaGFzIG5vIGxlbmd0aCBwcm9wZXJ0eScpOwp9CiAgICAKaWYgKEludGwuTnVtYmVyRm9ybWF0Lmxlbmd0aCAhPSAyKSB7CiAgICAkRVJST1IoJ0ludGwuTnVtYmVyRm9ybWF0Lmxlbmd0aCBpcyBub3QgMi4nKTsKfQoK","commentary":"","description":"Tests that the Intl.NumberFormat constructor has a length\nproperty that equals 2.","path":"TestCases/intl402/ch12/12.2/12.2.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAZGVzY3JpcHRpb24gVGVzdHMgdGhhdCBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuY29uc3RydWN0b3IgaXMgdGhlCiAqIEludGwuTnVtYmVyRm9ybWF0LgogKiBAYXV0aG9yOiBSb296YmVoIFBvdXJuYWRlcgogKi8KCmlmIChJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuY29uc3RydWN0b3IgIT09IEludGwuTnVtYmVyRm9ybWF0KSB7CiAgICAkRVJST1IoIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciBpcyBub3QgdGhlIHNhbWUgYXMgIiArCiAgICAgICAgICAiSW50bC5OdW1iZXJGb3JtYXQiKTsKfQoK","commentary":"","description":"Tests that Intl.NumberFormat.prototype.constructor is the\nIntl.NumberFormat.","path":"TestCases/intl402/ch12/12.3/12.3.1.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAZGVzY3JpcHRpb24gVGVzdHMgdGhhdCBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0CiAqIGNvbnZlcnRzIG90aGVyIHR5cGVzIHRvIG51bWJlcnMuCiAqIEBhdXRob3I6IFJvb3piZWggUG91cm5hZGVyCiAqLwoKdmFyIGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgpOwp2YXIgdGVzdERhdGEgPSBbdW5kZWZpbmVkLCBudWxsLCB0cnVlLCAnMC42NjY2NjY2J107CnZhciBudW1iZXI7CnZhciBpLCBpbnB1dCwgY29ycmVjdFJlc3VsdCwgcmVzdWx0OwoKZm9yIChpIGluIHRlc3REYXRhKSB7CiAgICBpbnB1dCA9IHRlc3REYXRhW2ldOwogICAgbnVtYmVyID0gK2lucHV0OwogICAgY29ycmVjdFJlc3VsdCA9IGZvcm1hdHRlci5mb3JtYXQobnVtYmVyKTsKICAgIAogICAgcmVzdWx0ID0gZm9ybWF0dGVyLmZvcm1hdChpbnB1dCk7CiAgICBpZiAocmVzdWx0ICE9PSBjb3JyZWN0UmVzdWx0KSB7CiAgICAgICAgJEVSUk9SKCdJbnRsLk51bWJlckZvcm1hdCBkb2VzIG5vdCBjb252ZXJ0IG90aGVyICcgKwogICAgICAgICAgICAndHlwZXMgdG8gbnVtYmVycy4gSW5wdXQ6ICInK2lucHV0KyciIE91dHB1dDogIicrcmVzdWx0KyciICcrCiAgICAgICAgICAgICdFeHBlY3RlZCBvdXRwdXQ6ICInK2NvcnJlY3RSZXN1bHQrJyInKTsKICAgIH0KfQoK","commentary":"","description":"Tests that Intl.NumberFormat.prototype.format\nconverts other types to numbers.","path":"TestCases/intl402/ch12/12.3/12.3.2_2.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAZGVzY3JpcHRpb24gVGVzdHMgdGhhdCBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0CiAqIGRvZXNuJ3QgdHJlYXQgYWxsIG51bWJlcnMgYXMgbmVnYXRpdmUuCiAqIEBhdXRob3I6IFJvb3piZWggUG91cm5hZGVyCiAqLwoKdmFyIGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgpOwogIAppZiAoZm9ybWF0dGVyLmZvcm1hdCgxKSA9PT0gZm9ybWF0dGVyLmZvcm1hdCgtMSkpIHsKICAgICRFUlJPUignSW50bC5OdW1iZXJGb3JtYXQgaXMgZm9ybWF0dGluZyAxIGFuZCAtMSB0aGUgc2FtZSB3YXkuJyk7Cn0KCmlmIChmb3JtYXR0ZXIuZm9ybWF0KC0wKSAhPT0gZm9ybWF0dGVyLmZvcm1hdCgwKSkgewogICAgJEVSUk9SKCdJbnRsLk51bWJlckZvcm1hdCBpcyBmb3JtYXR0aW5nIHNpZ25lZCB6ZXJvcyBkaWZmZXJlbnRseS4nKTsKfQoK","commentary":"","description":"Tests that Intl.NumberFormat.prototype.format\ndoesn't treat all numbers as negative.","path":"TestCases/intl402/ch12/12.3/12.3.2_3.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAZGVzY3JpcHRpb24gVGVzdHMgdGhhdCBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0CiAqIGhhbmRsZXMgTmFOLCBJbmZpbml0eSwgYW5kIC1JbmZpbml0eSBwcm9wZXJseS4KICogQGF1dGhvcjogUm9vemJlaCBQb3VybmFkZXIKICovCgovLyBGSVhNRTogV2UgYXJlIG9ubHkgbGlzdGluZyBOdW1lcmljX1R5cGU9RGVjaW1hbC4gTWF5IG5lZWQgdG8gYWRkIG1vcmUKLy8gd2hlbiB0aGUgc3BlYyBjbGFyaWZpZXMuIEN1cnJlbnQgYXMgb2YgVW5pY29kZSA2LjEuCnZhciBoYXNVbmljb2RlRGlnaXRzID0gbmV3IFJlZ0V4cCgnLiooWycgKwogICAgJzAtOVx1MDY2MC1cdTA2NjlcdTA2RjAtXHUwNkY5XHUwN0MwLVx1MDdDOVx1MDk2Ni1cdTA5NkYnICsKICAgICdcdTA5RTYtXHUwOUVGXHUwQTY2LVx1MEE2Rlx1MEFFNi1cdTBBRUZcdTBCNjYtXHUwQjZGXHUwQkU2LVx1MEJFRicgKwogICAgJ1x1MEM2Ni1cdTBDNkZcdTBDRTYtXHUwQ0VGXHUwRDY2LVx1MEQ2Rlx1MEU1MC1cdTBFNTlcdTBFRDAtXHUwRUQ5JyArCiAgICAnXHUwRjIwLVx1MEYyOVx1MTA0MC1cdTEwNDlcdTEwOTAtXHUxMDk5XHUxN0UwLVx1MTdFOVx1MTgxMC1cdTE4MTknICsKICAgICdcdTE5NDYtXHUxOTRGXHUxOUQwLVx1MTlEOVx1MUE4MC1cdTFBODlcdTFBOTAtXHUxQTk5XHUxQjUwLVx1MUI1OScgKwogICAgJ1x1MUJCMC1cdTFCQjlcdTFDNDAtXHUxQzQ5XHUxQzUwLVx1MUM1OVx1QTYyMC1cdUE2MjlcdUE4RDAtXHVBOEQ5JyArCiAgICAnXHVBOTAwLVx1QTkwOVx1QTlEMC1cdUE5RDlcdUFBNTAtXHVBQTU5XHVBQkYwLVx1QUJGOVx1RkYxMC1cdUZGMTknICsKICAgICddfCcgKwogICAgJ1x1RDgwMVtcdURDQTAtXHVEQ0E5XXwnICsKICAgICdcdUQ4MDRbXHVEQzY2LVx1REM2Rlx1RENGMC1cdURDRjlcdUREMzYtXHVERDNGXHVEREQwLVx1REREOV18JyArCiAgICAnXHVEODA1W1x1REVDMC1cdURFQzldfCcgKwogICAgJ1x1RDgzNVtcdURGQ0UtXHVERkZGXSknKTsKCnZhciBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKTsKdmFyIGZvcm1hdHRlZE5hTiA9IGZvcm1hdHRlci5mb3JtYXQoTmFOKTsKdmFyIGZvcm1hdHRlZEluZmluaXR5ID0gZm9ybWF0dGVyLmZvcm1hdChJbmZpbml0eSk7CnZhciBmb3JtYXR0ZWROZWdhdGl2ZUluZmluaXR5ID0gZm9ybWF0dGVyLmZvcm1hdCgtSW5maW5pdHkpOwoKaWYgKGZvcm1hdHRlZE5hTiA9PT0gZm9ybWF0dGVkSW5maW5pdHkpIHsKICAgICRFUlJPUignSW50bC5OdW1iZXJGb3JtYXQgZm9ybWF0cyBOYU4gYW5kIEluZmluaXR5IHRoZSAnICsKICAgICAgICAnc2FtZSB3YXkuJyk7Cn0KCmlmIChmb3JtYXR0ZWROYU4gPT09IGZvcm1hdHRlZE5lZ2F0aXZlSW5maW5pdHkpIHsKICAgICRFUlJPUignSW50bC5OdW1iZXJGb3JtYXQgZm9ybWF0cyBOYU4gYW5kIG5lZ2F0aXZlICcgKwogICAgICAgICdJbmZpbml0eSB0aGUgc2FtZSB3YXkuJyk7Cn0KCmlmIChmb3JtYXR0ZWRJbmZpbml0eSA9PT0gZm9ybWF0dGVkTmVnYXRpdmVJbmZpbml0eSkgewogICAgJEVSUk9SKCdJbnRsLk51bWJlckZvcm1hdCBmb3JtYXRzIEluZmluaXR5IGFuZCAnICsKICAgICAgICAnbmVnYXRpdmUgSW5maW5pdHkgdGhlIHNhbWUgd2F5LicpOwp9CgppZiAoaGFzVW5pY29kZURpZ2l0cy50ZXN0KGZvcm1hdHRlZE5hTikpIHsKICAgICRFUlJPUignSW50bC5OdW1iZXJGb3JtYXQgZm9ybWF0cyBOYU4gdXNpbmcgYSBkaWdpdC4nKTsKfQoKaWYgKGhhc1VuaWNvZGVEaWdpdHMudGVzdChmb3JtYXR0ZWRJbmZpbml0eSkpIHsKICAgICRFUlJPUignSW50bC5OdW1iZXJGb3JtYXQgZm9ybWF0cyBJbmZpbml0eSB1c2luZyBhICcgKwogICAgICAgICdkaWdpdC4nKTsKfQoKaWYgKGhhc1VuaWNvZGVEaWdpdHMudGVzdChmb3JtYXR0ZWROZWdhdGl2ZUluZmluaXR5KSkgewogICAgJEVSUk9SKCdJbnRsLk51bWJlckZvcm1hdCBmb3JtYXRzIG5lZ2F0aXZlIEluZmluaXR5ICcgKyAKICAgICAgICAndXNpbmcgYSBkaWdpdC4nKTsKfQoK","commentary":"","description":"Tests that Intl.NumberFormat.prototype.format\nhandles NaN, Infinity, and -Infinity properly.","path":"TestCases/intl402/ch12/12.3/12.3.2_4.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAZGVzY3JpcHRpb24gVGVzdHMgdGhhdCBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0CiAqIGZvcm1hdHMgcGVyY2VudCB2YWx1ZXMgcHJvcGVybHkuCiAqIEBhdXRob3I6IFJvb3piZWggUG91cm5hZGVyCiAqLwoKdmFyIG51bWJlckZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgpOwp2YXIgcGVyY2VudEZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCh1bmRlZmluZWQsIHtzdHlsZTogJ3BlcmNlbnQnfSk7Cgp2YXIgZm9ybWF0dGVkVHdlbnR5ID0gbnVtYmVyRm9ybWF0dGVyLmZvcm1hdCgyMCk7CnZhciBmb3JtYXR0ZWRUd2VudHlQZXJjZW50ID0gcGVyY2VudEZvcm1hdHRlci5mb3JtYXQoMC4yMCk7CgovLyBGSVhNRTogTWF5IG5vdCB3b3JrIGZvciBzb21lIHRoZW9yZXRpY2FsIGxvY2FsZXMgd2hlcmUgcGVyY2VudHMgYW5kCi8vIG5vcm1hbCBudW1iZXJzIGFyZSBmb3JtYXR0ZWQgdXNpbmcgZGlmZmVyZW50IG51bWJlcmluZyBzeXN0ZW1zLgppZiAoZm9ybWF0dGVkVHdlbnR5UGVyY2VudC5pbmRleE9mKGZvcm1hdHRlZFR3ZW50eSkgPT09IC0xKSB7CiAgICAkRVJST1IoIkludGwuTnVtYmVyRm9ybWF0J3MgZm9ybWF0dGluZyBvZiAyMCUgZG9lcyBub3QgaW5jbHVkZSBhICIgKwogICAgICAgICJmb3JtYXR0aW5nIG9mIDIwIGFzIGEgc3Vic3RyaW5nLiIpOwp9CgovLyBGSVhNRTogTW92ZSB0aGlzIHRvIHNvbWV3aGVyZSBhcHByb3ByaWF0ZQppZiAocGVyY2VudEZvcm1hdHRlci5mb3JtYXQoMC4wMTEpID09PSBwZXJjZW50Rm9ybWF0dGVyLmZvcm1hdCgwLjAyKSkgewogICAgJEVSUk9SKCdJbnRsLk51bWJlckZvcm1hdCBpcyBmb3JtYXR0aW5nIDEuMSUgYW5kIDIlIHRoZSBzYW1lIHdheS4nKTsKfQoK","commentary":"","description":"Tests that Intl.NumberFormat.prototype.format\nformats percent values properly.","path":"TestCases/intl402/ch12/12.3/12.3.2_5_b.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAZGVzY3JpcHRpb24gVGVzdHMgdGhhdCBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0CiAqIHN1cHBvcnRzIGFsbCBhbHRlcm5hdGl2ZSBudW1iZXJpbmcgc3lzdGVtcy4KICogQGF1dGhvcjogUm9vemJlaCBQb3VybmFkZXIKICovCgp2YXIgbnVtYmVyaW5nU3lzdGVtcyA9IHsKICAgIGFyYWI6IDB4MDY2MCwKICAgIGFyYWJleHQ6IDB4MDZGMCwKICAgIGJlbmc6IDB4MDlFNiwKICAgIGRldmE6IDB4MDk2NiwKICAgIGZ1bGx3aWRlOiAweEZGMTAsCiAgICBndWpyOiAweDBBRTYsCiAgICBndXJ1OiAweDBBNjYsCiAgICBoYW5pZGVjOiBbMHgzMDA3LCAweDRFMDAsIDB4NEU4QywgMHg0RTA5LCAweDU2REIsCiAgICAgICAgICAgICAgMHg0RTk0LCAweDUxNkQsIDB4NEUwMywgMHg1MTZCLCAweDRFNURdLAogICAga2htcjogMHgxN0UwLAogICAga25kYTogMHgwQ0U2LAogICAgbGFvbzogMHgwRUQwLAogICAgbGF0bjogMHgwMDMwLAogICAgbWx5bTogMHgwRDY2LAogICAgbW9uZzogMHgxODEwLAogICAgbXltcjogMHgxMDQwLAogICAgb3J5YTogMHgwQjY2LAogICAgdGFtbGRlYzogMHgwQkU2LAogICAgdGVsdTogMHgwQzY2LAogICAgdGhhaTogMHgwRTUwLAogICAgdGlidDogMHgwRjIwCn07Cgp2YXIgb3B0aW9ucywgZm9ybWF0dGVyOwp2YXIgcywgemVyb0NvZGUsIGRpZ2l0TGlzdDsKCmZvciAocyBpbiBudW1iZXJpbmdTeXN0ZW1zKSB7CiAgICB6ZXJvQ29kZSA9IG51bWJlcmluZ1N5c3RlbXNbc107CiAgICBpZiAodHlwZW9mIHplcm9Db2RlID09PSAnbnVtYmVyJykgewogICAgICAgIGRpZ2l0TGlzdCA9IFt6ZXJvQ29kZSwgemVyb0NvZGUrMSwgemVyb0NvZGUrMiwgemVyb0NvZGUrMywgemVyb0NvZGUrNCwKICAgICAgICAgICAgICAgICAgIHplcm9Db2RlKzUsIHplcm9Db2RlKzYsIHplcm9Db2RlKzcsIHplcm9Db2RlKzgsIHplcm9Db2RlKzldOwogICAgICAgIG51bWJlcmluZ1N5c3RlbXNbc10gPSBkaWdpdExpc3Q7CiAgICB9Cn0KCi8vIEZJWE1FOiBVbmZpbmlzaGVkCgo=","commentary":"","description":"Tests that Intl.NumberFormat.prototype.format\nsupports all alternative numbering systems.","path":"TestCases/intl402/ch12/12.3/12.3.2_5_e.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAZGVzY3JpcHRpb24gVGVzdHMgdGhhdCBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUgaXMgYW4gb2JqZWN0IHRoYXQKICogaGFzIGJlZW4gaW5pdGlhbGl6ZWQgYXMgYW4gSW50bC5OdW1iZXJGb3JtYXQuCiAqIEBhdXRob3I6IFJvb3piZWggUG91cm5hZGVyCiAqLwoKLy8gdGVzdCBieSBjYWxsaW5nIGEgZnVuY3Rpb24gdGhhdCB3b3VsZCBmYWlsIGlmICJ0aGlzIiB3ZXJlIG5vdCBhbiBvYmplY3QKLy8gaW5pdGlhbGl6ZWQgYXMgYW4gSW50bC5OdW1iZXJGb3JtYXQKaWYgKHR5cGVvZiBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0KDApICE9PSAic3RyaW5nIikgewogICAgJEVSUk9SKCJJbnRsLk51bWJlckZvcm1hdCdzIHByb3RvdHlwZSBpcyBub3QgYW4gb2JqZWN0IHRoYXQgaGFzIGJlZW4gIiArCiAgICAgICAgImluaXRpYWxpemVkIGFzIGFuIEludGwuTnVtYmVyRm9ybWF0Iik7Cn0KCg==","commentary":"","description":"Tests that Intl.NumberFormat.prototype is an object that\nhas been initialized as an Intl.NumberFormat.","path":"TestCases/intl402/ch12/12.3/12.3.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAZGVzY3JpcHRpb24gVGVzdHMgdGhhdCB0aGUgSW50bC5EYXRlVGltZUZvcm1hdCBwcm90b3R5cGUgb2JqZWN0IGV4aXN0cyBhbmQKICogaXMgbm90IHdyaXRhYmxlLCBlbnVtZXJhYmxlLCBvciBjb25maWd1cmFibGUuCiAqIEBhdXRob3I6IFJvb3piZWggUG91cm5hZGVyCiAqLwoKdmFyIGRlc2M7CgppZiAoIUludGwuRGF0ZVRpbWVGb3JtYXQuaGFzT3duUHJvcGVydHkoJ3Byb3RvdHlwZScpKSB7CiAgICAkRVJST1IoJ0ludGwuRGF0ZVRpbWVGb3JtYXQgaGFzIG5vIHByb3RvdHlwZSBwcm9wZXJ0eScpOwp9CgpkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LCAncHJvdG90eXBlJyk7CmlmIChkZXNjLndyaXRhYmxlID09PSB0cnVlKSB7CiAgICAkRVJST1IoJ0ludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlIGlzIHdyaXRhYmxlLicpOwp9CmlmIChkZXNjLmVudW1lcmFibGUgPT09IHRydWUpIHsKICAgICRFUlJPUignSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUgaXMgZW51bWVyYWJsZS4nKTsKfQppZiAoZGVzYy5jb25maWd1cmFibGUgPT09IHRydWUpIHsKICAgICRFUlJPUignSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUgaXMgY29uZmlndXJhYmxlLicpOwp9Cgo=","commentary":"","description":"Tests that the Intl.DateTimeFormat prototype object exists and\nis not writable, enumerable, or configurable.","path":"TestCases/intl402/ch13/13.2/13.2.1.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAZGVzY3JpcHRpb24gVGVzdHMgdGhhdCBJbnRsLkRhdGVUaW1lRm9ybWF0IGhhcyBhIHN1cHBvcnRlZExvY2FsZXNPZgogKiBwcm9wZXJ0eSwgYW5kIGl0IHdvcmtzIGFzIHBsYW5uZWQuCiAqIEBhdXRob3I6IFJvb3piZWggUG91cm5hZGVyCiAqLwoKdmFyIGRlZmF1bHRMb2NhbGUgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZTsKdmFyIG5vdFN1cHBvcnRlZCA9ICd6eHgnOyAvLyAibm8gbGluZ3Vpc3RpYyBjb250ZW50Igp2YXIgcmVxdWVzdGVkTG9jYWxlcyA9IFtkZWZhdWx0TG9jYWxlLCBub3RTdXBwb3J0ZWRdOwogICAgCnZhciBzdXBwb3J0ZWRMb2NhbGVzOwoKaWYgKCFJbnRsLkRhdGVUaW1lRm9ybWF0Lmhhc093blByb3BlcnR5KCdzdXBwb3J0ZWRMb2NhbGVzT2YnKSkgewogICAgJEVSUk9SKCJJbnRsLkRhdGVUaW1lRm9ybWF0IGRvZXNuJ3QgaGF2ZSBhIHN1cHBvcnRlZExvY2FsZXNPZiBwcm9wZXJ0eS4iKTsKfQogICAgCnN1cHBvcnRlZExvY2FsZXMgPSBJbnRsLkRhdGVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZihyZXF1ZXN0ZWRMb2NhbGVzKTsKaWYgKHN1cHBvcnRlZExvY2FsZXMubGVuZ3RoICE9PSAxKSB7CiAgICAkRVJST1IoJ1RoZSBsZW5ndGggb2Ygc3VwcG9ydGVkIGxvY2FsZXMgbGlzdCBpcyBub3QgMS4nKTsKfQogICAgCmlmIChzdXBwb3J0ZWRMb2NhbGVzWzBdICE9PSBkZWZhdWx0TG9jYWxlKSB7CiAgICAkRVJST1IoJ1RoZSBkZWZhdWx0IGxvY2FsZSBpcyBub3QgcmV0dXJuZWQgaW4gdGhlIHN1cHBvcnRlZCBsaXN0LicpOwp9Cgo=","commentary":"","description":"Tests that Intl.DateTimeFormat has a supportedLocalesOf\nproperty, and it works as planned.","path":"TestCases/intl402/ch13/13.2/13.2.2.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAZGVzY3JpcHRpb24gVGVzdHMgdGhlIGludGVybmFsIHByb3BlcnRpZXMgb2YgSW50bC5EYXRlVGltZUZvcm1hdC4KICogQGF1dGhvcjogUm9vemJlaCBQb3VybmFkZXIKICovCgp2YXIgZGVmYXVsdExvY2FsZSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KFtdKS5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGU7CnZhciBzdXBwb3J0ZWRMb2NhbGVzID0gSW50bC5EYXRlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoW2RlZmF1bHRMb2NhbGVdKTsKICAKaWYgKHN1cHBvcnRlZExvY2FsZXMubGVuZ3RoIDwgMSB8fCBzdXBwb3J0ZWRMb2NhbGVzWzBdICE9PSBkZWZhdWx0TG9jYWxlKSB7CiAgICAkRVJST1IoJ1RoZSBkZWZhdWx0IGxvY2FsZSBpcyBub3Qgc3VwcG9ydGVkIGJ5IEludGwuRGF0ZVRpbWVGb3JtYXQnKTsKfQoKLy8gRklYTUU6IEZpbmQgYSB3YXkgdG8gY2hlY2sgdGhhdCBbW3JlbGV2YW50RXh0ZW5zaW9uS2V5c11dID09PSBbJ2NhJywgJ251J10KICAKLy8gRklYTUU6IEZpbmQgYSB3YXkgdG8gY2hlY2sgc3BlY2lmaWVkIHByb3BlcnRpZXMgb2YgW1tsb2NhbGVEYXRhXV0KCg==","commentary":"","description":"Tests the internal properties of Intl.DateTimeFormat.","path":"TestCases/intl402/ch13/13.2/13.2.3.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAZGVzY3JpcHRpb24gVGVzdHMgdGhhdCB0aGUgSW50bC5EYXRlVGltZUZvcm1hdCBjb25zdHJ1Y3RvciBoYXMgYSBsZW5ndGgKICogcHJvcGVydHkgdGhhdCBlcXVhbHMgMi4KICogQGF1dGhvcjogUm9vemJlaCBQb3VybmFkZXIKICovCgppZiAoIUludGwuRGF0ZVRpbWVGb3JtYXQuaGFzT3duUHJvcGVydHkoJ2xlbmd0aCcpKSB7CiAgICAkRVJST1IoJ0ludGwuRGF0ZVRpbWVGb3JtYXQgaGFzIG5vIGxlbmd0aCBwcm9wZXJ0eScpOwp9CiAgICAKaWYgKEludGwuRGF0ZVRpbWVGb3JtYXQubGVuZ3RoICE9IDIpIHsKICAgICRFUlJPUignSW50bC5EYXRlVGltZUZvcm1hdC5sZW5ndGggaXMgbm90IDIuJyk7Cn0KCg==","commentary":"","description":"Tests that the Intl.DateTimeFormat constructor has a length\nproperty that equals 2.","path":"TestCases/intl402/ch13/13.2/13.2.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAZGVzY3JpcHRpb24gVGVzdHMgdGhhdCBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciBpcyB0aGUKICogSW50bC5EYXRlVGltZUZvcm1hdC4KICogQGF1dGhvcjogUm9vemJlaCBQb3VybmFkZXIKICovCgppZiAoSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuY29uc3RydWN0b3IgIT09IEludGwuRGF0ZVRpbWVGb3JtYXQpIHsKICAgICRFUlJPUigiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuY29uc3RydWN0b3IgaXMgbm90IHRoZSBzYW1lIGFzICIgKwogICAgICAgICAgIkludGwuRGF0ZVRpbWVGb3JtYXQiKTsKfQoK","commentary":"","description":"Tests that Intl.DateTimeFormat.prototype.constructor is the\nIntl.DateTimeFormat.","path":"TestCases/intl402/ch13/13.3/13.3.1.js"},{"author":"Roozbeh Pournader","code":"Ly8gQ29weXJpZ2h0IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8qKgogKiBAZGVzY3JpcHRpb24gVGVzdHMgdGhhdCBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZSBpcyBhbiBvYmplY3QgdGhhdAogKiBoYXMgYmVlbiBpbml0aWFsaXplZCBhcyBhbiBJbnRsLkRhdGVUaW1lRm9ybWF0LgogKiBAYXV0aG9yOiBSb296YmVoIFBvdXJuYWRlcgogKi8KCi8vIHRlc3QgYnkgY2FsbGluZyBhIGZ1bmN0aW9uIHRoYXQgd291bGQgZmFpbCBpZiAidGhpcyIgd2VyZSBub3QgYW4gb2JqZWN0Ci8vIGluaXRpYWxpemVkIGFzIGFuIEludGwuRGF0ZVRpbWVGb3JtYXQKaWYgKHR5cGVvZiBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQoMCkgIT09ICJzdHJpbmciKSB7CiAgICAkRVJST1IoIkludGwuRGF0ZVRpbWVGb3JtYXQncyBwcm90b3R5cGUgaXMgbm90IGFuIG9iamVjdCB0aGF0IGhhcyBiZWVuICIgKwogICAgICAgICJpbml0aWFsaXplZCBhcyBhbiBJbnRsLkRhdGVUaW1lRm9ybWF0Iik7Cn0KCg==","commentary":"","description":"Tests that Intl.DateTimeFormat.prototype is an object that\nhas been initialized as an Intl.DateTimeFormat.","path":"TestCases/intl402/ch13/13.3/13.3.js"}]}} \ No newline at end of file diff --git a/website/json/testcases_intl402.json b/website/json/testcases_intl402.json index 92476f758..a28c6a329 100644 --- a/website/json/testcases_intl402.json +++ b/website/json/testcases_intl402.json @@ -1 +1 @@ -{"numTests":34,"testSuite":["json/intl402.json"]} \ No newline at end of file +{"numTests":25,"testSuite":["json/intl402.json"]} \ No newline at end of file -- cgit v1.2.1