era-boundary-islamic-tbla.js (1687B)
1 // |reftest| skip-if(!this.hasOwnProperty('Temporal')) -- Temporal is not enabled unconditionally 2 // Copyright (C) 2025 Igalia, S.L. All rights reserved. 3 // This code is governed by the BSD license found in the LICENSE file. 4 5 /*--- 6 esid: sec-temporal.zoneddatetime.from 7 description: Non-positive era years are remapped in islamic-tbla calendar 8 includes: [temporalHelpers.js] 9 features: [Temporal, Intl.Era-monthcode] 10 ---*/ 11 12 const calendar = "islamic-tbla"; 13 const options = { overflow: "reject" }; 14 15 const ah0 = Temporal.ZonedDateTime.from({ era: "ah", eraYear: 0, monthCode: "M01", day: 1, hour: 12, minute: 34, timeZone: "UTC", calendar }, options); 16 TemporalHelpers.assertPlainDateTime( 17 ah0.toPlainDateTime(), 18 0, 1, "M01", 1, 12, 34, 0, 0, 0, 0, "AH 0 resolves to BH 1", 19 "bh", 1); 20 21 const ah1n = Temporal.ZonedDateTime.from({ era: "ah", eraYear: -1, monthCode: "M01", day: 1, hour: 12, minute: 34, timeZone: "UTC", calendar }, options); 22 TemporalHelpers.assertPlainDateTime( 23 ah1n.toPlainDateTime(), 24 -1, 1, "M01", 1, 12, 34, 0, 0, 0, 0, "AH -1 resolves to BH 2", 25 "bh", 2); 26 27 const bh0 = Temporal.ZonedDateTime.from({ era: "bh", eraYear: 0, monthCode: "M01", day: 1, hour: 12, minute: 34, timeZone: "UTC", calendar }, options); 28 TemporalHelpers.assertPlainDateTime( 29 bh0.toPlainDateTime(), 30 1, 1, "M01", 1, 12, 34, 0, 0, 0, 0, "BH 0 resolves to AH 1", 31 "ah", 1); 32 33 const bh1n = Temporal.ZonedDateTime.from({ era: "bh", eraYear: -1, monthCode: "M01", day: 1, hour: 12, minute: 34, timeZone: "UTC", calendar }, options); 34 TemporalHelpers.assertPlainDateTime( 35 bh1n.toPlainDateTime(), 36 2, 1, "M01", 1, 12, 34, 0, 0, 0, 0, "BH -1 resolves to AH 2", 37 "ah", 2); 38 39 reportCompare(0, 0);