test262/test/intl402/NumberFormat/numbering-system-options.js
Mike Pennisi f26c2a11bd Remove unnecessary "includes" directives
The values defined by the referenced files are not used by these tests.
This makes their inclusion superfluous, which needlessly increases the
time to execute the tests and may confuse some readers.
2019-09-25 13:59:24 -04:00

63 lines
2.4 KiB
JavaScript

// Copyright 2012 Mozilla Corporation. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-initializenumberformat
description: >
Tests that the options numberingSystem and calendar can be set through
either the locale or the options.
author: Norbert Lindenberg, Daniel Ehrenberg
---*/
let defaultLocale = new Intl.NumberFormat().resolvedOptions().locale;
let supportedNumberingSystems = ["latn", "arab"].filter(nu =>
new Intl.NumberFormat(defaultLocale + "-u-nu-" + nu)
.resolvedOptions().numberingSystem === nu
);
let options = [
{key: "nu", property: "numberingSystem", type: "string", values: supportedNumberingSystems},
];
options.forEach(function (option) {
let numberFormat, opt, result;
// find out which values are supported for a property in the default locale
let supportedValues = [];
option.values.forEach(function (value) {
opt = {};
opt[option.property] = value;
numberFormat = new Intl.NumberFormat([defaultLocale], opt);
result = numberFormat.resolvedOptions()[option.property];
if (result !== undefined && supportedValues.indexOf(result) === -1) {
supportedValues.push(result);
}
});
// verify that the supported values can also be set through the locale
supportedValues.forEach(function (value) {
numberFormat = new Intl.NumberFormat([defaultLocale + "-u-" + option.key + "-" + value]);
result = numberFormat.resolvedOptions()[option.property];
assert.sameValue(result, value, "Property " + option.property + " couldn't be set through locale extension key " + option.key + ".");
});
// verify that the options setting overrides the locale setting
supportedValues.forEach(function (value) {
let otherValue;
option.values.forEach(function (possibleValue) {
if (possibleValue !== value) {
otherValue = possibleValue;
}
});
if (otherValue !== undefined) {
opt = {};
opt[option.property] = value;
numberFormat = new Intl.NumberFormat([defaultLocale + "-u-" + option.key + "-" + otherValue], opt);
result = numberFormat.resolvedOptions()[option.property];
assert.sameValue(result, value, "Options value for property " + option.property + " doesn't override locale extension key " + option.key + ".");
}
});
});