6a44b75098
Remove unicode keyword/value "ca" and "nu" from the resolvedOptions().locale, if it does not match the option "calendar" / "numberingSystem". Bug: v8:9887 Change-Id: Idabc7e266e8e5f847f919324a93e39df4df440c8 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1877708 Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Frank Tang <ftang@chromium.org> Cr-Commit-Position: refs/heads/master@{#64663}
79 lines
1.6 KiB
JavaScript
79 lines
1.6 KiB
JavaScript
// 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.
|
|
|
|
// Flags: --harmony-intl-add-calendar-numbering-system
|
|
|
|
let invalidCalendar = [
|
|
"invalid",
|
|
"abce",
|
|
"abc-defghi",
|
|
];
|
|
|
|
let illFormedCalendar = [
|
|
"",
|
|
"i",
|
|
"ij",
|
|
"abcdefghi",
|
|
"abc-ab",
|
|
];
|
|
|
|
// https://www.unicode.org/repos/cldr/tags/latest/common/bcp47/calendar.xml
|
|
let validCalendar= [
|
|
"buddhist",
|
|
"chinese",
|
|
"coptic",
|
|
"dangi",
|
|
"ethioaa",
|
|
"ethiopic",
|
|
"gregory",
|
|
"hebrew",
|
|
"indian",
|
|
"islamic",
|
|
"islamic-umalqura",
|
|
"islamic-tbla",
|
|
"islamic-civil",
|
|
"islamic-rgsa",
|
|
"iso8601",
|
|
"japanese",
|
|
"persian",
|
|
"roc",
|
|
];
|
|
|
|
let locales = [
|
|
"en",
|
|
"ar",
|
|
];
|
|
|
|
invalidCalendar.forEach(function(calendar) {
|
|
locales.forEach(function(base) {
|
|
var df;
|
|
assertDoesNotThrow(() => df = new Intl.DateTimeFormat([base], {calendar}));
|
|
assertEquals(
|
|
(new Intl.DateTimeFormat([base])).resolvedOptions().calendar,
|
|
df.resolvedOptions().calendar);
|
|
});
|
|
});
|
|
|
|
illFormedCalendar.forEach(function(calendar) {
|
|
assertThrows(
|
|
() => new Intl.DateTimeFormat(["en"], {calendar}),
|
|
RangeError);
|
|
}
|
|
);
|
|
|
|
let value = new Date();
|
|
validCalendar.forEach(function(calendar) {
|
|
locales.forEach(function(base) {
|
|
let l = base + "-u-ca-" + calendar;
|
|
let dtf = new Intl.DateTimeFormat([base], {calendar});
|
|
assertEquals(base, dtf.resolvedOptions().locale);
|
|
|
|
// Test the formatting result is the same as passing in via u-ca-
|
|
// in the locale.
|
|
let dtf2 = new Intl.DateTimeFormat([l]);
|
|
assertEquals(dtf2.format(value), dtf.format(value));
|
|
});
|
|
}
|
|
);
|