test262/test/intl402/Intl/supportedValuesOf/calendars-accepted-by-DateT...

46 lines
1.6 KiB
JavaScript

// Copyright (C) 2021 André Bargull. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-intl.supportedvaluesof
description: >
The returned "calendar" values can be used with DateTimeFormat.
info: |
Intl.supportedValuesOf ( key )
1. Let key be ? ToString(key).
2. If key is "calendar", then
a. Let list be ! AvailableCalendars( ).
...
9. Return ! CreateArrayFromList( list ).
AvailableCalendars ( )
The AvailableCalendars abstract operation returns a List, ordered as if an
Array of the same values had been sorted using %Array.prototype.sort% using
undefined as comparefn, that contains unique calendar types identifying the
calendars for which the implementation provides the functionality of
Intl.DateTimeFormat objects. The list must include "gregory".
includes: [testIntl.js]
locale: [en]
features: [Intl-enumeration, Array.prototype.includes]
---*/
const calendars = Intl.supportedValuesOf("calendar");
for (let calendar of calendars) {
let obj = new Intl.DateTimeFormat("en", {calendar});
assert.sameValue(obj.resolvedOptions().calendar, calendar,
`${calendar} is supported by DateTimeFormat`);
}
for (let calendar of allCalendars()) {
let obj = new Intl.DateTimeFormat("en", {calendar});
if (obj.resolvedOptions().calendar === calendar) {
assert(calendars.includes(calendar),
`${calendar} supported but not returned by supportedValuesOf`);
} else {
assert(!calendars.includes(calendar),
`${calendar} not supported but returned by supportedValuesOf`);
}
}