2019-10-01 17:23:20 +00:00
|
|
|
// Copyright 2019 the V8 project authors. All rights reserved.
|
|
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
|
|
// found in the LICENSE file.
|
|
|
|
|
|
|
|
let invalidNumberingSystem = [
|
|
|
|
"invalid",
|
|
|
|
"abce",
|
|
|
|
"finance",
|
|
|
|
"native",
|
|
|
|
"traditio",
|
|
|
|
"abc-defghi",
|
|
|
|
];
|
|
|
|
|
|
|
|
let illFormedNumberingSystem = [
|
|
|
|
"",
|
|
|
|
"i",
|
|
|
|
"ij",
|
|
|
|
"abcdefghi",
|
|
|
|
"abc-ab",
|
|
|
|
];
|
|
|
|
|
|
|
|
// https://tc39.github.io/ecma402/#table-numbering-system-digits
|
|
|
|
let validNumberingSystem= [
|
|
|
|
"arab",
|
|
|
|
"arabext",
|
|
|
|
"bali",
|
|
|
|
"beng",
|
|
|
|
"deva",
|
|
|
|
"fullwide",
|
|
|
|
"gujr",
|
|
|
|
"guru",
|
|
|
|
"hanidec",
|
|
|
|
"khmr",
|
|
|
|
"knda",
|
|
|
|
"laoo",
|
|
|
|
"latn",
|
|
|
|
"limb",
|
|
|
|
"mlym",
|
|
|
|
"mong",
|
|
|
|
"mymr",
|
|
|
|
"orya",
|
|
|
|
"tamldec",
|
|
|
|
"telu",
|
|
|
|
"thai",
|
|
|
|
"tibt",
|
|
|
|
];
|
|
|
|
|
|
|
|
let locales = [
|
|
|
|
"en",
|
|
|
|
"ar",
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
invalidNumberingSystem.forEach(function(numberingSystem) {
|
|
|
|
locales.forEach(function(base) {
|
|
|
|
var df;
|
|
|
|
assertDoesNotThrow(
|
|
|
|
() => df = new Intl.RelativeTimeFormat([base], {numberingSystem}));
|
|
|
|
assertEquals(
|
|
|
|
(new Intl.RelativeTimeFormat([base])).resolvedOptions().numberingSystem,
|
|
|
|
df.resolvedOptions().numberingSystem);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
illFormedNumberingSystem.forEach(function(numberingSystem) {
|
|
|
|
assertThrows(
|
|
|
|
() => new Intl.RelativeTimeFormat(["en"], {numberingSystem}),
|
|
|
|
RangeError);
|
|
|
|
});
|
|
|
|
|
|
|
|
let value = 1234567.89;
|
|
|
|
validNumberingSystem.forEach(function(numberingSystem) {
|
|
|
|
locales.forEach(function(base) {
|
|
|
|
let l = base + "-u-nu-" + numberingSystem;
|
|
|
|
let nf = new Intl.RelativeTimeFormat([base], {numberingSystem});
|
2019-10-29 23:51:09 +00:00
|
|
|
assertEquals(base, nf.resolvedOptions().locale);
|
2019-10-01 17:23:20 +00:00
|
|
|
assertEquals(numberingSystem, nf.resolvedOptions().numberingSystem);
|
|
|
|
|
|
|
|
// Test the formatting result is the same as passing in via u-nu-
|
|
|
|
// in the locale.
|
|
|
|
let nf2 = new Intl.RelativeTimeFormat([l]);
|
|
|
|
assertEquals(nf2.format(value, "day"), nf.format(value, "day"));
|
|
|
|
});
|
|
|
|
}
|
|
|
|
);
|