v8/test/intl/date-format/check-calendar.js
Frank Tang 6a44b75098 Remove keyword/value "ca" and "nu" from locale
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}
2019-10-30 21:00:08 +00:00

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));
});
}
);