summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/Intl/supportedValuesOf-calendar.js
blob: 24a4ac3a57d85239bb0c0e132956a2236eef3c41 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// |reftest| skip-if(!this.hasOwnProperty("Intl"))

const calendars = Intl.supportedValuesOf("calendar");

assertEq(new Set(calendars).size, calendars.length, "No duplicates are present");
assertEqArray(calendars, [...calendars].sort(), "The list is sorted");

const typeRE = /^[a-z0-9]{3,8}(-[a-z0-9]{3,8})*$/;
for (let calendar of calendars) {
  assertEq(typeRE.test(calendar), true, `${calendar} matches the 'type' production`);
}

for (let calendar of calendars) {
  assertEq(new Intl.Locale("und", {calendar}).calendar, calendar, `${calendar} is canonicalised`);
}

for (let calendar of calendars) {
  let obj = new Intl.DateTimeFormat("en", {calendar});
  assertEq(obj.resolvedOptions().calendar, calendar, `${calendar} is supported by DateTimeFormat`);
}

assertEq(calendars.includes("gregory"), true, `Includes the Gregorian calendar`);

if (typeof reportCompare === "function")
  reportCompare(true, true);