From 99aa2c22ec682dce7ee3365e5eedb9dce362d0ac Mon Sep 17 00:00:00 2001 From: Ben Allen Date: Mon, 3 Nov 2025 01:17:23 -0800 Subject: [PATCH] Add test to verify era aliases for non-gregorian calendars (#4631) --- .../canonicalize-era-codes-non-gregorian.js | 26 ++++++++++++++++++ .../canonicalize-era-codes-non-gregorian.js | 26 ++++++++++++++++++ .../canonicalize-era-codes-non-gregorian.js | 26 ++++++++++++++++++ .../canonicalize-era-codes-non-gregorian.js | 27 +++++++++++++++++++ 4 files changed, 105 insertions(+) create mode 100644 test/intl402/Temporal/PlainDate/from/canonicalize-era-codes-non-gregorian.js create mode 100644 test/intl402/Temporal/PlainDateTime/from/canonicalize-era-codes-non-gregorian.js create mode 100644 test/intl402/Temporal/PlainYearMonth/from/canonicalize-era-codes-non-gregorian.js create mode 100644 test/intl402/Temporal/ZonedDateTime/from/canonicalize-era-codes-non-gregorian.js diff --git a/test/intl402/Temporal/PlainDate/from/canonicalize-era-codes-non-gregorian.js b/test/intl402/Temporal/PlainDate/from/canonicalize-era-codes-non-gregorian.js new file mode 100644 index 0000000000..7af94acef1 --- /dev/null +++ b/test/intl402/Temporal/PlainDate/from/canonicalize-era-codes-non-gregorian.js @@ -0,0 +1,26 @@ +// Copyright (C) 2025 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal-calendarsupportsera +description: Calendar era code is canonicalized (non-Gregorian calendars) +features: [Temporal, Intl.Era-monthcode] +---*/ + + +const calendarEraAliases = [ + { calendar: "japanese", canonicalizedEra: "ce", alias: "ad" }, + { calendar: "japanese", canonicalizedEra: "bce", alias: "bc" } +]; + + +for (const calendarEraAlias of calendarEraAliases) { + const calendar = Temporal.PlainDate.from({ + calendar: calendarEraAlias.calendar, + era: calendarEraAlias.alias, + eraYear: 1, + month: 1, + day: 1 + }); + assert.sameValue(calendar.era, calendarEraAlias.canonicalizedEra, calendar.era + " should canonicalize to " + calendarEraAlias.canonicalizedEra) +} diff --git a/test/intl402/Temporal/PlainDateTime/from/canonicalize-era-codes-non-gregorian.js b/test/intl402/Temporal/PlainDateTime/from/canonicalize-era-codes-non-gregorian.js new file mode 100644 index 0000000000..a397636d7a --- /dev/null +++ b/test/intl402/Temporal/PlainDateTime/from/canonicalize-era-codes-non-gregorian.js @@ -0,0 +1,26 @@ +// Copyright (C) 2025 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindatetime.from +description: Calendar era code is canonicalized (non-Gregorian calendars) +features: [Temporal, Intl.Era-monthcode] +---*/ + + +const calendarEraAliases = [ + { calendar: "japanese", canonicalizedEra: "ce", alias: "ad" }, + { calendar: "japanese", canonicalizedEra: "bce", alias: "bc" } +]; + + +for (const calendarEraAlias of calendarEraAliases) { + const calendar = Temporal.PlainDateTime.from({ + calendar: calendarEraAlias.calendar, + era: calendarEraAlias.alias, + eraYear: 1, + month: 1, + day: 1 + }); + assert.sameValue(calendar.era, calendarEraAlias.canonicalizedEra, calendar.era + " should canonicalize to " + calendarEraAlias.canonicalizedEra) +} diff --git a/test/intl402/Temporal/PlainYearMonth/from/canonicalize-era-codes-non-gregorian.js b/test/intl402/Temporal/PlainYearMonth/from/canonicalize-era-codes-non-gregorian.js new file mode 100644 index 0000000000..acc42b8803 --- /dev/null +++ b/test/intl402/Temporal/PlainYearMonth/from/canonicalize-era-codes-non-gregorian.js @@ -0,0 +1,26 @@ +// Copyright (C) 2025 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal-plainyearmonth.from +description: Calendar era code is canonicalized (non-Gregorian calendars) +features: [Temporal, Intl.Era-monthcode] +---*/ + + +const calendarEraAliases = [ + { calendar: "japanese", canonicalizedEra: "ce", alias: "ad" }, + { calendar: "japanese", canonicalizedEra: "bce", alias: "bc" } +]; + + +for (const calendarEraAlias of calendarEraAliases) { + const calendar = Temporal.PlainYearMonth.from({ + calendar: calendarEraAlias.calendar, + era: calendarEraAlias.alias, + eraYear: 1, + month: 1, + day: 1 + }); + assert.sameValue(calendar.era, calendarEraAlias.canonicalizedEra, calendar.era + " should canonicalize to " + calendarEraAlias.canonicalizedEra) +} diff --git a/test/intl402/Temporal/ZonedDateTime/from/canonicalize-era-codes-non-gregorian.js b/test/intl402/Temporal/ZonedDateTime/from/canonicalize-era-codes-non-gregorian.js new file mode 100644 index 0000000000..61e6ae20c1 --- /dev/null +++ b/test/intl402/Temporal/ZonedDateTime/from/canonicalize-era-codes-non-gregorian.js @@ -0,0 +1,27 @@ +// Copyright (C) 2025 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.zonedatetime.from +description: Calendar era code is canonicalized (non-Gregorian calendars) +features: [Temporal, Intl.Era-monthcode] +---*/ + + +const calendarEraAliases = [ + { calendar: "japanese", canonicalizedEra: "ce", alias: "ad" }, + { calendar: "japanese", canonicalizedEra: "bce", alias: "bc" } +]; + + +for (const calendarEraAlias of calendarEraAliases) { + const calendar = Temporal.ZonedDateTime.from({ + calendar: calendarEraAlias.calendar, + era: calendarEraAlias.alias, + eraYear: 1, + month: 1, + day: 1, + timeZone: "UTC" + }); + assert.sameValue(calendar.era, calendarEraAlias.canonicalizedEra, calendar.era + " should canonicalize to " + calendarEraAlias.canonicalizedEra) +}