Source code
Revision control
Copy as Markdown
Other Tools
// Copyright (C) 2025 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-intl.datetimeformat
description: >
Tests that fallbacks for deprecated calendars are selected from one of the
values returned from `AvailableCalendars`.
info: |
CreateDateTimeFormat ( _newTarget_, _locales_, _options_, _required_, _defaults_ )
...
9. If _resolvedCalendar_ is *"islamic"* or *"islamic-rgsa"*, then
a. Let _fallbackCalendar_ be an implementation- and locale-defined calendar type that is one of the values returned from AvailableCalendars.
b. Set _resolvedCalendar_ to CanonicalizeUValue(*"ca"*, _fallbackCalendar_).
c. If the ECMAScript implementation has a mechanism for reporting diagnostic warning messages, a warning should be issued.
10. Set _dateTimeFormat_.[[Calendar]] to _resolvedCalendar_.
locale: [en, en-u-ca-islamic]
features: [Intl.Era-monthcode]
---*/
const availableCalendars = [
"buddhist",
"chinese",
"coptic",
"dangi",
"ethioaa",
"ethiopic",
"gregory",
"hebrew",
"indian",
"islamic-civil",
"islamic-tbla",
"islamic-umalqura",
"iso8601",
"japanese",
"persian",
"roc",
];
const islamic = new Intl.DateTimeFormat("en", { calendar: "islamic" });
assert.sameValue(availableCalendars.includes(islamic.resolvedOptions().calendar), true, "no valid fallback for 'islamic' calendar option");
const islamicRgsa = new Intl.DateTimeFormat("en", { calendar: "islamic-rgsa" });
assert.sameValue(availableCalendars.includes(islamicRgsa.resolvedOptions().calendar), true, "no valid fallback for 'islamic-rgsa' calendar option");
const islamicUExtension = new Intl.DateTimeFormat("en-u-ca-islamic");
assert.sameValue(availableCalendars.includes(islamicUExtension.resolvedOptions().calendar), true, "no valid fallback for 'islamic' calendar u extension");
const islamicRgsaUExtension = new Intl.DateTimeFormat("en-u-ca-islamic-rgsa");
assert.sameValue(availableCalendars.includes(islamicRgsaUExtension.resolvedOptions().calendar), true, "no valid fallback for 'islamic-rgsa' calendar u extension");
reportCompare(0, 0);