Source code

Revision control

Copy as Markdown

Other Tools

// |reftest| skip-if(!this.hasOwnProperty("Temporal")||!this.hasOwnProperty("Intl"))
const calendars = {
iso8601: "0001-01-01",
buddhist: "-000542-01-01",
chinese: "0001-02-10",
coptic: "0284-08-29",
dangi: "0001-02-10",
ethiopic: "0008-08-27",
ethioaa: "-005492-07-17",
gregory: "0001-01-01",
hebrew: "-003760-09-07",
indian: "0079-03-22",
islamic: "0622-07-19",
"islamic-civil": "0622-07-19",
"islamic-rgsa": "0622-07-19",
"islamic-tbla": "0622-07-18",
"islamic-umalqura": "0622-07-19",
japanese: "0001-01-01",
persian: "0622-03-21",
roc: "1912-01-01",
};
assertEqArray(
Intl.supportedValuesOf("calendar").sort(),
Object.keys(calendars).sort()
);
// See bug 1950425.
const calendarsNotEnabledInRelease = [
"islamic",
"islamic-rgsa",
"islamic-umalqura",
];
assertEq(calendarsNotEnabledInRelease.every(c => c in calendars), true);
for (let [calendar, value] of Object.entries(calendars)) {
if (calendarsNotEnabledInRelease.includes(calendar)) {
continue;
}
// Ensure year 1 matches the expected date.
let yearOne = Temporal.PlainDate.from({calendar, year: 1, month: 1, day: 1});
let expected = Temporal.PlainDate.from(value).withCalendar(calendar);
assertEq(
Temporal.PlainDate.compare(yearOne, expected),
0,
yearOne.toString(),
);
// Ensure year 0 is equal to subtracting one year from year 1.
let yearZero = Temporal.PlainDate.from({calendar, year: 0, month: 1, day: 1});
assertEq(
Temporal.PlainDate.compare(yearZero, yearOne.subtract("P1Y")),
0,
yearZero.toString(),
);
}
if (typeof reportCompare === "function")
reportCompare(true, true);