diff options
Diffstat (limited to 'js/src/tests/test262/intl402/Number')
13 files changed, 237 insertions, 0 deletions
diff --git a/js/src/tests/test262/intl402/Number/browser.js b/js/src/tests/test262/intl402/Number/browser.js new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/js/src/tests/test262/intl402/Number/browser.js diff --git a/js/src/tests/test262/intl402/Number/prototype/browser.js b/js/src/tests/test262/intl402/Number/prototype/browser.js new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/js/src/tests/test262/intl402/Number/prototype/browser.js diff --git a/js/src/tests/test262/intl402/Number/prototype/shell.js b/js/src/tests/test262/intl402/Number/prototype/shell.js new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/js/src/tests/test262/intl402/Number/prototype/shell.js diff --git a/js/src/tests/test262/intl402/Number/prototype/toLocaleString/browser.js b/js/src/tests/test262/intl402/Number/prototype/toLocaleString/browser.js new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/js/src/tests/test262/intl402/Number/prototype/toLocaleString/browser.js diff --git a/js/src/tests/test262/intl402/Number/prototype/toLocaleString/builtin.js b/js/src/tests/test262/intl402/Number/prototype/toLocaleString/builtin.js new file mode 100644 index 0000000000..cc3639f018 --- /dev/null +++ b/js/src/tests/test262/intl402/Number/prototype/toLocaleString/builtin.js @@ -0,0 +1,30 @@ +// Copyright 2012 Mozilla Corporation. All rights reserved. +// This code is governed by the license found in the LICENSE file. + +/*--- +es5id: 13.2.1_L15 +description: > + Tests that Number.prototype.toLocaleString meets the requirements + for built-in objects defined by the introduction of chapter 17 of + the ECMAScript Language Specification. +author: Norbert Lindenberg +includes: [isConstructor.js] +features: [Reflect.construct] +---*/ + +assert.sameValue(Object.prototype.toString.call(Number.prototype.toLocaleString), "[object Function]", + "The [[Class]] internal property of a built-in function must be " + + "\"Function\"."); + +assert(Object.isExtensible(Number.prototype.toLocaleString), + "Built-in objects must be extensible."); + +assert.sameValue(Object.getPrototypeOf(Number.prototype.toLocaleString), Function.prototype); + +assert.sameValue(Number.prototype.toLocaleString.hasOwnProperty("prototype"), false, + "Built-in functions that aren't constructors must not have a prototype property."); + +assert.sameValue(isConstructor(Number.prototype.toLocaleString), false, + "Built-in functions don't implement [[Construct]] unless explicitly specified."); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/intl402/Number/prototype/toLocaleString/default-options-object-prototype.js b/js/src/tests/test262/intl402/Number/prototype/toLocaleString/default-options-object-prototype.js new file mode 100644 index 0000000000..d6d1f0693c --- /dev/null +++ b/js/src/tests/test262/intl402/Number/prototype/toLocaleString/default-options-object-prototype.js @@ -0,0 +1,21 @@ +// Copyright (C) 2017 Daniel Ehrenberg. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-initializenumberformat +description: > + Monkey-patching Object.prototype does not change the default + options for NumberFormat as a null prototype is used. +info: | + InitializeNumberFormat ( numberFormat, locales, options ) + + 1. If _options_ is *undefined*, then + 1. Let _options_ be ObjectCreate(*null*). +---*/ + +if (new Intl.NumberFormat("en").resolvedOptions().locale === "en") { + Object.prototype.maximumFractionDigits = 1; + assert.sameValue(1.23.toLocaleString("en"), "1.23"); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/intl402/Number/prototype/toLocaleString/length.js b/js/src/tests/test262/intl402/Number/prototype/toLocaleString/length.js new file mode 100644 index 0000000000..53286f8b64 --- /dev/null +++ b/js/src/tests/test262/intl402/Number/prototype/toLocaleString/length.js @@ -0,0 +1,34 @@ +// Copyright (C) 2017 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sup-number.prototype.tolocalestring +description: > + Number.prototype.toLocaleString.length is 0. +info: | + Number.prototype.toLocaleString ( [ locales [ , options ] ] ) + + 17 ECMAScript Standard Built-in Objects: + + Every built-in function object, including constructors, has a length + property whose value is an integer. Unless otherwise specified, this + value is equal to the largest number of named arguments shown in the + subclause headings for the function description. Optional parameters + (which are indicated with brackets: [ ]) or rest parameters (which + are shown using the form «...name») are not included in the default + argument count. + Unless otherwise specified, the length property of a built-in function + object has the attributes { [[Writable]]: false, [[Enumerable]]: false, + [[Configurable]]: true }. + +includes: [propertyHelper.js] +---*/ + +verifyProperty(Number.prototype.toLocaleString, 'length', { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/intl402/Number/prototype/toLocaleString/returns-same-results-as-NumberFormat.js b/js/src/tests/test262/intl402/Number/prototype/toLocaleString/returns-same-results-as-NumberFormat.js new file mode 100644 index 0000000000..10c54d530b --- /dev/null +++ b/js/src/tests/test262/intl402/Number/prototype/toLocaleString/returns-same-results-as-NumberFormat.js @@ -0,0 +1,40 @@ +// Copyright 2012 Mozilla Corporation. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 13.2.1_5 +description: > + Tests that Number.prototype.toLocaleString produces the same + results as Intl.NumberFormat. +author: Norbert Lindenberg +includes: [compareArray.js] +---*/ + +var numbers = [0, -0, 1, -1, 5.5, 123, -123, -123.45, 123.44501, 0.001234, + -0.00000000123, 0.00000000000000000000000000000123, 1.2, 0.0000000012344501, + 123445.01, 12344501000000000000000000000000000, -12344501000000000000000000000000000, + Infinity, -Infinity, NaN]; +var locales = [undefined, ["de"], ["th-u-nu-thai"], ["en"], ["ja-u-nu-jpanfin"], ["ar-u-nu-arab"]]; +var options = [ + undefined, + {style: "percent"}, + {style: "currency", currency: "EUR", currencyDisplay: "symbol"}, + {style: "currency", currency: "IQD", currencyDisplay: "symbol"}, + {style: "currency", currency: "KMF", currencyDisplay: "symbol"}, + {style: "currency", currency: "CLF", currencyDisplay: "symbol"}, + {useGrouping: false, minimumIntegerDigits: 3, minimumFractionDigits: 1, maximumFractionDigits: 3} +]; + +locales.forEach(function (locales) { + options.forEach(function (options) { + var referenceNumberFormat = new Intl.NumberFormat(locales, options); + var referenceFormatted = numbers.map(referenceNumberFormat.format); + + var formatted = numbers.map(function (a) { return a.toLocaleString(locales, options); }); + assert.compareArray(formatted, referenceFormatted, + "(Testing with locales " + locales + "; options " + + (options ? JSON.stringify(options) : options) + ".)"); + }); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/intl402/Number/prototype/toLocaleString/shell.js b/js/src/tests/test262/intl402/Number/prototype/toLocaleString/shell.js new file mode 100644 index 0000000000..54371b7789 --- /dev/null +++ b/js/src/tests/test262/intl402/Number/prototype/toLocaleString/shell.js @@ -0,0 +1,19 @@ +// GENERATED, DO NOT EDIT +// file: isConstructor.js +// Copyright (C) 2017 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: | + Test if a given function is a constructor function. +defines: [isConstructor] +---*/ + +function isConstructor(f) { + try { + Reflect.construct(function(){}, [], f); + } catch (e) { + return false; + } + return true; +} diff --git a/js/src/tests/test262/intl402/Number/prototype/toLocaleString/taint-Intl-NumberFormat.js b/js/src/tests/test262/intl402/Number/prototype/toLocaleString/taint-Intl-NumberFormat.js new file mode 100644 index 0000000000..ba9a755568 --- /dev/null +++ b/js/src/tests/test262/intl402/Number/prototype/toLocaleString/taint-Intl-NumberFormat.js @@ -0,0 +1,16 @@ +// Copyright 2013 Mozilla Corporation. All rights reserved. +// This code is governed by the license found in the LICENSE file. + +/*--- +es5id: 13.2.1_4_2 +description: > + Tests that Number.prototype.toLocaleString uses the standard + built-in Intl.NumberFormat constructor. +author: Norbert Lindenberg +includes: [testIntl.js] +---*/ + +taintDataProperty(Intl, "NumberFormat"); +(0.0).toLocaleString(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/intl402/Number/prototype/toLocaleString/this-number-value.js b/js/src/tests/test262/intl402/Number/prototype/toLocaleString/this-number-value.js new file mode 100644 index 0000000000..86e68ef2ce --- /dev/null +++ b/js/src/tests/test262/intl402/Number/prototype/toLocaleString/this-number-value.js @@ -0,0 +1,28 @@ +// Copyright 2012 Mozilla Corporation. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 13.2.1_1 +description: Tests that toLocaleString handles "this Number value" correctly. +author: Norbert Lindenberg +---*/ + +var invalidValues = [undefined, null, "5", false, {valueOf: function () { return 5; }}]; +var validValues = [5, NaN, -1234567.89, -Infinity]; + +invalidValues.forEach(function (value) { + assert.throws(TypeError, function() { + var result = Number.prototype.toLocaleString.call(value); + }, "Number.prototype.toLocaleString did not reject this = " + value + "."); +}); + +// for valid values, just check that a Number value and the corresponding +// Number object get the same result. +validValues.forEach(function (value) { + var Constructor = Number; // to keep jshint happy + var valueResult = Number.prototype.toLocaleString.call(value); + var objectResult = Number.prototype.toLocaleString.call(new Constructor(value)); + assert.sameValue(valueResult, objectResult, "Number.prototype.toLocaleString produces different results for Number value " + value + " and corresponding Number object."); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/intl402/Number/prototype/toLocaleString/throws-same-exceptions-as-NumberFormat.js b/js/src/tests/test262/intl402/Number/prototype/toLocaleString/throws-same-exceptions-as-NumberFormat.js new file mode 100644 index 0000000000..8dbb5b72a3 --- /dev/null +++ b/js/src/tests/test262/intl402/Number/prototype/toLocaleString/throws-same-exceptions-as-NumberFormat.js @@ -0,0 +1,49 @@ +// Copyright 2012 Mozilla Corporation. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 13.2.1_4_1 +description: > + Tests that Number.prototype.toLocaleString throws the same + exceptions as Intl.NumberFormat. +author: Norbert Lindenberg +---*/ + +var locales = [null, [NaN], ["i"], ["de_DE"]]; +var options = [ + {localeMatcher: null}, + {style: "invalid"}, + {style: "currency"}, + {style: "currency", currency: "ßP"}, + {maximumSignificantDigits: -Infinity} +]; + +locales.forEach(function (locales) { + var referenceError, error; + try { + var format = new Intl.NumberFormat(locales); + } catch (e) { + referenceError = e; + } + assert.notSameValue(referenceError, undefined, "Internal error: Expected exception was not thrown by Intl.NumberFormat for locales " + locales + "."); + + assert.throws(referenceError.constructor, function() { + var result = (0).toLocaleString(locales); + }, "Number.prototype.toLocaleString didn't throw exception for locales " + locales + "."); +}); + +options.forEach(function (options) { + var referenceError, error; + try { + var format = new Intl.NumberFormat([], options); + } catch (e) { + referenceError = e; + } + assert.notSameValue(referenceError, undefined, "Internal error: Expected exception was not thrown by Intl.NumberFormat for options " + JSON.stringify(options) + "."); + + assert.throws(referenceError.constructor, function() { + var result = (0).toLocaleString([], options); + }, "Number.prototype.toLocaleString didn't throw exception for options " + JSON.stringify(options) + "."); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/intl402/Number/shell.js b/js/src/tests/test262/intl402/Number/shell.js new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/js/src/tests/test262/intl402/Number/shell.js |