diff --git a/test/built-ins/Temporal/PlainDate/calendar-case-insensitive.js b/test/built-ins/Temporal/PlainDate/calendar-case-insensitive.js index ab5ef646fd..e4d4a588f2 100644 --- a/test/built-ins/Temporal/PlainDate/calendar-case-insensitive.js +++ b/test/built-ins/Temporal/PlainDate/calendar-case-insensitive.js @@ -7,7 +7,14 @@ description: Calendar names are case-insensitive features: [Temporal] ---*/ -const arg = "iSo8601"; +let arg = "iSo8601"; const result = new Temporal.PlainDate(2000, 5, 2, arg); assert.sameValue(result.calendarId, "iso8601", "Calendar is case-insensitive"); + +arg = "\u0130SO8601"; +assert.throws( + RangeError, + () => new Temporal.PlainDate(2000, 5, 2, arg), + "calendar ID is capital dotted I is not lowercased" +); diff --git a/test/built-ins/Temporal/PlainDate/compare/argument-propertybag-calendar-case-insensitive.js b/test/built-ins/Temporal/PlainDate/compare/argument-propertybag-calendar-case-insensitive.js index 964ee7d1b4..e9f958888d 100644 --- a/test/built-ins/Temporal/PlainDate/compare/argument-propertybag-calendar-case-insensitive.js +++ b/test/built-ins/Temporal/PlainDate/compare/argument-propertybag-calendar-case-insensitive.js @@ -7,10 +7,20 @@ description: The calendar name is case-insensitive features: [Temporal] ---*/ -const calendar = "IsO8601"; - -const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; +const arg = { year: 1976, monthCode: "M11", day: 18, calendar: "IsO8601" }; const result1 = Temporal.PlainDate.compare(arg, new Temporal.PlainDate(1976, 11, 18)); assert.sameValue(result1, 0, "Calendar is case-insensitive (first argument)"); const result2 = Temporal.PlainDate.compare(new Temporal.PlainDate(1976, 11, 18), arg); assert.sameValue(result2, 0, "Calendar is case-insensitive (second argument)"); + +arg.calendar = "\u0130SO8601"; +assert.throws( + RangeError, + () => Temporal.PlainDate.compare(arg, new Temporal.PlainDate(1976, 11, 18)), + "calendar ID is capital dotted I is not lowercased (first argument)" +); +assert.throws( + RangeError, + () => Temporal.PlainDate.compare(new Temporal.PlainDate(1976, 11, 18), arg), + "calendar ID is capital dotted I is not lowercased (second argument)" +); diff --git a/test/built-ins/Temporal/PlainDate/from/argument-propertybag-calendar-case-insensitive.js b/test/built-ins/Temporal/PlainDate/from/argument-propertybag-calendar-case-insensitive.js index a85901e4f2..2752ffe730 100644 --- a/test/built-ins/Temporal/PlainDate/from/argument-propertybag-calendar-case-insensitive.js +++ b/test/built-ins/Temporal/PlainDate/from/argument-propertybag-calendar-case-insensitive.js @@ -8,8 +8,13 @@ includes: [temporalHelpers.js] features: [Temporal] ---*/ -const calendar = "IsO8601"; - -const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; +const arg = { year: 1976, monthCode: "M11", day: 18, calendar: "IsO8601" }; const result = Temporal.PlainDate.from(arg); TemporalHelpers.assertPlainDate(result, 1976, 11, "M11", 18, "Calendar is case-insensitive"); + +arg.calendar = "\u0130SO8601"; +assert.throws( + RangeError, + () => Temporal.PlainDate.from(arg), + "calendar ID is capital dotted I is not lowercased" +); diff --git a/test/built-ins/Temporal/PlainDate/prototype/equals/argument-propertybag-calendar-case-insensitive.js b/test/built-ins/Temporal/PlainDate/prototype/equals/argument-propertybag-calendar-case-insensitive.js index 199fd6601b..d62c5049fb 100644 --- a/test/built-ins/Temporal/PlainDate/prototype/equals/argument-propertybag-calendar-case-insensitive.js +++ b/test/built-ins/Temporal/PlainDate/prototype/equals/argument-propertybag-calendar-case-insensitive.js @@ -9,8 +9,13 @@ features: [Temporal] const instance = new Temporal.PlainDate(1976, 11, 18); -const calendar = "IsO8601"; - -const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; +const arg = { year: 1976, monthCode: "M11", day: 18, calendar: "IsO8601" }; const result = instance.equals(arg); assert.sameValue(result, true, "Calendar is case-insensitive"); + +arg.calendar = "\u0130SO8601"; +assert.throws( + RangeError, + () => instance.equals(arg), + "calendar ID is capital dotted I is not lowercased" +); diff --git a/test/built-ins/Temporal/PlainDate/prototype/since/argument-propertybag-calendar-case-insensitive.js b/test/built-ins/Temporal/PlainDate/prototype/since/argument-propertybag-calendar-case-insensitive.js index 3afedb0745..47a3b67484 100644 --- a/test/built-ins/Temporal/PlainDate/prototype/since/argument-propertybag-calendar-case-insensitive.js +++ b/test/built-ins/Temporal/PlainDate/prototype/since/argument-propertybag-calendar-case-insensitive.js @@ -10,8 +10,13 @@ features: [Temporal] const instance = new Temporal.PlainDate(1976, 11, 18); -const calendar = "IsO8601"; - -const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; +const arg = { year: 1976, monthCode: "M11", day: 18, calendar: "IsO8601" }; const result = instance.since(arg); TemporalHelpers.assertDuration(result, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Calendar is case-insensitive"); + +arg.calendar = "\u0130SO8601"; +assert.throws( + RangeError, + () => instance.since(arg), + "calendar ID is capital dotted I is not lowercased" +); diff --git a/test/built-ins/Temporal/PlainDate/prototype/until/argument-propertybag-calendar-case-insensitive.js b/test/built-ins/Temporal/PlainDate/prototype/until/argument-propertybag-calendar-case-insensitive.js index 71a5dd19f8..7dfae4b93d 100644 --- a/test/built-ins/Temporal/PlainDate/prototype/until/argument-propertybag-calendar-case-insensitive.js +++ b/test/built-ins/Temporal/PlainDate/prototype/until/argument-propertybag-calendar-case-insensitive.js @@ -10,8 +10,13 @@ features: [Temporal] const instance = new Temporal.PlainDate(1976, 11, 18); -const calendar = "IsO8601"; - -const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; +const arg = { year: 1976, monthCode: "M11", day: 18, calendar: "IsO8601" }; const result = instance.until(arg); TemporalHelpers.assertDuration(result, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Calendar is case-insensitive"); + +arg.calendar = "\u0130SO8601"; +assert.throws( + RangeError, + () => instance.until(arg), + "calendar ID is capital dotted I is not lowercased" +); diff --git a/test/built-ins/Temporal/PlainDate/prototype/withCalendar/calendar-case-insensitive.js b/test/built-ins/Temporal/PlainDate/prototype/withCalendar/calendar-case-insensitive.js index 511b0df4f4..6a0ce65d69 100644 --- a/test/built-ins/Temporal/PlainDate/prototype/withCalendar/calendar-case-insensitive.js +++ b/test/built-ins/Temporal/PlainDate/prototype/withCalendar/calendar-case-insensitive.js @@ -31,6 +31,13 @@ const instance = new Temporal.PlainDate(1976, 11, 18, { yearOfWeek() {}, }); -const arg = "iSo8601"; +let arg = "iSo8601"; const result = instance.withCalendar(arg); assert.sameValue(result.calendarId, "iso8601", "Calendar is case-insensitive"); + +arg = "\u0130SO8601"; +assert.throws( + RangeError, + () => instance.withCalendar(arg), + "calendar ID is ASCII-lowercased, capital dotted I is not lowercased" +); diff --git a/test/built-ins/Temporal/PlainDateTime/calendar-case-insensitive.js b/test/built-ins/Temporal/PlainDateTime/calendar-case-insensitive.js index 2f096dd854..655ba0c242 100644 --- a/test/built-ins/Temporal/PlainDateTime/calendar-case-insensitive.js +++ b/test/built-ins/Temporal/PlainDateTime/calendar-case-insensitive.js @@ -7,7 +7,14 @@ description: Calendar names are case-insensitive features: [Temporal] ---*/ -const arg = "iSo8601"; +let arg = "iSo8601"; const result = new Temporal.PlainDateTime(2000, 5, 2, 15, 23, 30, 987, 654, 321, arg); assert.sameValue(result.calendarId, "iso8601", "Calendar is case-insensitive"); + +arg = "\u0130SO8601"; +assert.throws( + RangeError, + () => new Temporal.PlainDateTime(2000, 5, 2, 15, 23, 30, 987, 654, 321, arg), + "calendar ID is capital dotted I is not lowercased" +); diff --git a/test/built-ins/Temporal/PlainDateTime/compare/argument-propertybag-calendar-case-insensitive.js b/test/built-ins/Temporal/PlainDateTime/compare/argument-propertybag-calendar-case-insensitive.js index 5ecd1cd2ef..7d89c703f8 100644 --- a/test/built-ins/Temporal/PlainDateTime/compare/argument-propertybag-calendar-case-insensitive.js +++ b/test/built-ins/Temporal/PlainDateTime/compare/argument-propertybag-calendar-case-insensitive.js @@ -7,10 +7,20 @@ description: The calendar name is case-insensitive features: [Temporal] ---*/ -const calendar = "IsO8601"; - -const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; +const arg = { year: 1976, monthCode: "M11", day: 18, calendar: "IsO8601" }; const result1 = Temporal.PlainDateTime.compare(arg, new Temporal.PlainDateTime(1976, 11, 18)); assert.sameValue(result1, 0, "Calendar is case-insensitive (first argument)"); const result2 = Temporal.PlainDateTime.compare(new Temporal.PlainDateTime(1976, 11, 18), arg); assert.sameValue(result2, 0, "Calendar is case-insensitive (second argument)"); + +arg.calendar = "\u0130SO8601"; +assert.throws( + RangeError, + () => Temporal.PlainDateTime.compare(arg, new Temporal.PlainDateTime(1976, 11, 18)), + "calendar ID is capital dotted I is not lowercased (first argument)" +); +assert.throws( + RangeError, + () => Temporal.PlainDateTime.compare(new Temporal.PlainDateTime(1976, 11, 18), arg), + "calendar ID is capital dotted I is not lowercased (second argument)" +); diff --git a/test/built-ins/Temporal/PlainDateTime/from/argument-propertybag-calendar-case-insensitive.js b/test/built-ins/Temporal/PlainDateTime/from/argument-propertybag-calendar-case-insensitive.js index d2ae9dfc0a..c3955ad95b 100644 --- a/test/built-ins/Temporal/PlainDateTime/from/argument-propertybag-calendar-case-insensitive.js +++ b/test/built-ins/Temporal/PlainDateTime/from/argument-propertybag-calendar-case-insensitive.js @@ -8,8 +8,13 @@ includes: [temporalHelpers.js] features: [Temporal] ---*/ -const calendar = "IsO8601"; - -const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; +const arg = { year: 1976, monthCode: "M11", day: 18, calendar: "IsO8601" }; const result = Temporal.PlainDateTime.from(arg); TemporalHelpers.assertPlainDateTime(result, 1976, 11, "M11", 18, 0, 0, 0, 0, 0, 0, "Calendar is case-insensitive"); + +arg.calendar = "\u0130SO8601"; +assert.throws( + RangeError, + () => Temporal.PlainDateTime.from(arg), + "calendar ID is capital dotted I is not lowercased" +); diff --git a/test/built-ins/Temporal/PlainDateTime/prototype/equals/argument-propertybag-calendar-case-insensitive.js b/test/built-ins/Temporal/PlainDateTime/prototype/equals/argument-propertybag-calendar-case-insensitive.js index b0ed162f6f..42c8d4d065 100644 --- a/test/built-ins/Temporal/PlainDateTime/prototype/equals/argument-propertybag-calendar-case-insensitive.js +++ b/test/built-ins/Temporal/PlainDateTime/prototype/equals/argument-propertybag-calendar-case-insensitive.js @@ -9,8 +9,13 @@ features: [Temporal] const instance = new Temporal.PlainDateTime(1976, 11, 18); -const calendar = "IsO8601"; - -const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; +const arg = { year: 1976, monthCode: "M11", day: 18, calendar: "IsO8601" }; const result = instance.equals(arg); assert.sameValue(result, true, "Calendar is case-insensitive"); + +arg.calendar = "\u0130SO8601"; +assert.throws( + RangeError, + () => instance.equals(arg), + "calendar ID is capital dotted I is not lowercased" +); diff --git a/test/built-ins/Temporal/PlainDateTime/prototype/since/argument-propertybag-calendar-case-insensitive.js b/test/built-ins/Temporal/PlainDateTime/prototype/since/argument-propertybag-calendar-case-insensitive.js index 1f8bac6a78..881eb8f0dc 100644 --- a/test/built-ins/Temporal/PlainDateTime/prototype/since/argument-propertybag-calendar-case-insensitive.js +++ b/test/built-ins/Temporal/PlainDateTime/prototype/since/argument-propertybag-calendar-case-insensitive.js @@ -10,8 +10,13 @@ features: [Temporal] const instance = new Temporal.PlainDateTime(1976, 11, 18); -const calendar = "IsO8601"; - -const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; +const arg = { year: 1976, monthCode: "M11", day: 18, calendar: "IsO8601" }; const result = instance.since(arg); TemporalHelpers.assertDuration(result, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Calendar is case-insensitive"); + +arg.calendar = "\u0130SO8601"; +assert.throws( + RangeError, + () => instance.since(arg), + "calendar ID is capital dotted I is not lowercased" +); diff --git a/test/built-ins/Temporal/PlainDateTime/prototype/until/argument-propertybag-calendar-case-insensitive.js b/test/built-ins/Temporal/PlainDateTime/prototype/until/argument-propertybag-calendar-case-insensitive.js index 2d9dd762ce..1c91b794e4 100644 --- a/test/built-ins/Temporal/PlainDateTime/prototype/until/argument-propertybag-calendar-case-insensitive.js +++ b/test/built-ins/Temporal/PlainDateTime/prototype/until/argument-propertybag-calendar-case-insensitive.js @@ -10,8 +10,13 @@ features: [Temporal] const instance = new Temporal.PlainDateTime(1976, 11, 18); -const calendar = "IsO8601"; - -const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; +const arg = { year: 1976, monthCode: "M11", day: 18, calendar: "IsO8601" }; const result = instance.until(arg); TemporalHelpers.assertDuration(result, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Calendar is case-insensitive"); + +arg.calendar = "\u0130SO8601"; +assert.throws( + RangeError, + () => instance.until(arg), + "calendar ID is capital dotted I is not lowercased" +); diff --git a/test/built-ins/Temporal/PlainDateTime/prototype/withCalendar/calendar-case-insensitive.js b/test/built-ins/Temporal/PlainDateTime/prototype/withCalendar/calendar-case-insensitive.js index 9af65170f6..7545f4af25 100644 --- a/test/built-ins/Temporal/PlainDateTime/prototype/withCalendar/calendar-case-insensitive.js +++ b/test/built-ins/Temporal/PlainDateTime/prototype/withCalendar/calendar-case-insensitive.js @@ -31,6 +31,13 @@ const instance = new Temporal.PlainDateTime(1976, 11, 18, 15, 23, 30, 123, 456, yearOfWeek() {}, }); -const arg = "iSo8601"; +let arg = "iSo8601"; const result = instance.withCalendar(arg); assert.sameValue(result.calendarId, "iso8601", "Calendar is case-insensitive"); + +arg = "\u0130SO8601"; +assert.throws( + RangeError, + () => instance.withCalendar(arg), + "calendar ID is ASCII-lowercased, capital dotted I is not lowercased" +); diff --git a/test/built-ins/Temporal/PlainMonthDay/calendar-case-insensitive.js b/test/built-ins/Temporal/PlainMonthDay/calendar-case-insensitive.js index e42d4d19c4..71ef3ac4f3 100644 --- a/test/built-ins/Temporal/PlainMonthDay/calendar-case-insensitive.js +++ b/test/built-ins/Temporal/PlainMonthDay/calendar-case-insensitive.js @@ -7,7 +7,14 @@ description: Calendar names are case-insensitive features: [Temporal] ---*/ -const arg = "iSo8601"; +let arg = "iSo8601"; const result = new Temporal.PlainMonthDay(12, 15, arg, 1972); assert.sameValue(result.calendarId, "iso8601", "Calendar is case-insensitive"); + +arg = "\u0130SO8601"; +assert.throws( + RangeError, + () => new Temporal.PlainMonthDay(12, 15, arg, 1972), + "calendar ID is capital dotted I is not lowercased" +); diff --git a/test/built-ins/Temporal/PlainMonthDay/from/argument-propertybag-calendar-case-insensitive.js b/test/built-ins/Temporal/PlainMonthDay/from/argument-propertybag-calendar-case-insensitive.js index bdd4634474..86adb3811a 100644 --- a/test/built-ins/Temporal/PlainMonthDay/from/argument-propertybag-calendar-case-insensitive.js +++ b/test/built-ins/Temporal/PlainMonthDay/from/argument-propertybag-calendar-case-insensitive.js @@ -8,8 +8,13 @@ includes: [temporalHelpers.js] features: [Temporal] ---*/ -const calendar = "IsO8601"; - -const arg = { monthCode: "M11", day: 18, calendar }; +const arg = { monthCode: "M11", day: 18, calendar: "IsO8601" }; const result = Temporal.PlainMonthDay.from(arg); TemporalHelpers.assertPlainMonthDay(result, "M11", 18, "Calendar is case-insensitive"); + +arg.calendar = "\u0130SO8601"; +assert.throws( + RangeError, + () => Temporal.PlainMonthDay.from(arg), + "calendar ID is capital dotted I is not lowercased" +); diff --git a/test/built-ins/Temporal/PlainMonthDay/prototype/equals/argument-propertybag-calendar-case-insensitive.js b/test/built-ins/Temporal/PlainMonthDay/prototype/equals/argument-propertybag-calendar-case-insensitive.js index bafa6df764..d4df95f64a 100644 --- a/test/built-ins/Temporal/PlainMonthDay/prototype/equals/argument-propertybag-calendar-case-insensitive.js +++ b/test/built-ins/Temporal/PlainMonthDay/prototype/equals/argument-propertybag-calendar-case-insensitive.js @@ -9,8 +9,13 @@ features: [Temporal] const instance = new Temporal.PlainMonthDay(11, 18); -const calendar = "IsO8601"; - -const arg = { monthCode: "M11", day: 18, calendar }; +const arg = { monthCode: "M11", day: 18, calendar: "IsO8601" }; const result = instance.equals(arg); assert.sameValue(result, true, "Calendar is case-insensitive"); + +arg.calendar = "\u0130SO8601"; +assert.throws( + RangeError, + () => instance.equals(arg), + "calendar ID is capital dotted I is not lowercased" +); diff --git a/test/built-ins/Temporal/PlainYearMonth/calendar-case-insensitive.js b/test/built-ins/Temporal/PlainYearMonth/calendar-case-insensitive.js index 7c6d96efce..6a398ef4bc 100644 --- a/test/built-ins/Temporal/PlainYearMonth/calendar-case-insensitive.js +++ b/test/built-ins/Temporal/PlainYearMonth/calendar-case-insensitive.js @@ -7,7 +7,14 @@ description: Calendar names are case-insensitive features: [Temporal] ---*/ -const arg = "iSo8601"; +let arg = "iSo8601"; const result = new Temporal.PlainYearMonth(2000, 5, arg, 1); assert.sameValue(result.calendarId, "iso8601", "Calendar is case-insensitive"); + +arg = "\u0130SO8601"; +assert.throws( + RangeError, + () => new Temporal.PlainYearMonth(2000, 5, arg, 1), + "calendar ID is capital dotted I is not lowercased" +); diff --git a/test/built-ins/Temporal/PlainYearMonth/compare/argument-propertybag-calendar-case-insensitive.js b/test/built-ins/Temporal/PlainYearMonth/compare/argument-propertybag-calendar-case-insensitive.js index b6390fa434..a32ce0c92a 100644 --- a/test/built-ins/Temporal/PlainYearMonth/compare/argument-propertybag-calendar-case-insensitive.js +++ b/test/built-ins/Temporal/PlainYearMonth/compare/argument-propertybag-calendar-case-insensitive.js @@ -7,10 +7,20 @@ description: The calendar name is case-insensitive features: [Temporal] ---*/ -const calendar = "IsO8601"; - -const arg = { year: 2019, monthCode: "M06", calendar }; +const arg = { year: 2019, monthCode: "M06", calendar: "IsO8601" }; const result1 = Temporal.PlainYearMonth.compare(arg, new Temporal.PlainYearMonth(2019, 6)); assert.sameValue(result1, 0, "Calendar is case-insensitive (first argument)"); const result2 = Temporal.PlainYearMonth.compare(new Temporal.PlainYearMonth(2019, 6), arg); assert.sameValue(result2, 0, "Calendar is case-insensitive (second argument)"); + +arg.calendar = "\u0130SO8601"; +assert.throws( + RangeError, + () => Temporal.PlainYearMonth.compare(arg, new Temporal.PlainYearMonth(2019, 6)), + "calendar ID is capital dotted I is not lowercased (first argument)" +); +assert.throws( + RangeError, + () => Temporal.PlainYearMonth.compare(new Temporal.PlainYearMonth(2019, 6), arg), + "calendar ID is capital dotted I is not lowercased (second argument)" +); diff --git a/test/built-ins/Temporal/PlainYearMonth/from/argument-propertybag-calendar-case-insensitive.js b/test/built-ins/Temporal/PlainYearMonth/from/argument-propertybag-calendar-case-insensitive.js index addc6aeef4..8d13288689 100644 --- a/test/built-ins/Temporal/PlainYearMonth/from/argument-propertybag-calendar-case-insensitive.js +++ b/test/built-ins/Temporal/PlainYearMonth/from/argument-propertybag-calendar-case-insensitive.js @@ -8,8 +8,13 @@ includes: [temporalHelpers.js] features: [Temporal] ---*/ -const calendar = "IsO8601"; - -const arg = { year: 2019, monthCode: "M06", calendar }; +const arg = { year: 2019, monthCode: "M06", calendar: "IsO8601" }; const result = Temporal.PlainYearMonth.from(arg); TemporalHelpers.assertPlainYearMonth(result, 2019, 6, "M06", "Calendar is case-insensitive"); + +arg.calendar = "\u0130SO8601"; +assert.throws( + RangeError, + () => Temporal.PlainYearMonth.from(arg), + "calendar ID is capital dotted I is not lowercased" +); diff --git a/test/built-ins/Temporal/PlainYearMonth/prototype/equals/argument-propertybag-calendar-case-insensitive.js b/test/built-ins/Temporal/PlainYearMonth/prototype/equals/argument-propertybag-calendar-case-insensitive.js index 2d7bedf2f3..47d7c353fc 100644 --- a/test/built-ins/Temporal/PlainYearMonth/prototype/equals/argument-propertybag-calendar-case-insensitive.js +++ b/test/built-ins/Temporal/PlainYearMonth/prototype/equals/argument-propertybag-calendar-case-insensitive.js @@ -9,8 +9,13 @@ features: [Temporal] const instance = new Temporal.PlainYearMonth(2019, 6); -const calendar = "IsO8601"; - -const arg = { year: 2019, monthCode: "M06", calendar }; +const arg = { year: 2019, monthCode: "M06", calendar: "IsO8601" }; const result = instance.equals(arg); assert.sameValue(result, true, "Calendar is case-insensitive"); + +arg.calendar = "\u0130SO8601"; +assert.throws( + RangeError, + () => instance.equals(arg), + "calendar ID is capital dotted I is not lowercased" +); diff --git a/test/built-ins/Temporal/PlainYearMonth/prototype/since/argument-propertybag-calendar-case-insensitive.js b/test/built-ins/Temporal/PlainYearMonth/prototype/since/argument-propertybag-calendar-case-insensitive.js index b290e51b50..3364189dbf 100644 --- a/test/built-ins/Temporal/PlainYearMonth/prototype/since/argument-propertybag-calendar-case-insensitive.js +++ b/test/built-ins/Temporal/PlainYearMonth/prototype/since/argument-propertybag-calendar-case-insensitive.js @@ -10,8 +10,13 @@ features: [Temporal] const instance = new Temporal.PlainYearMonth(2019, 6); -const calendar = "IsO8601"; - -const arg = { year: 2019, monthCode: "M06", calendar }; +const arg = { year: 2019, monthCode: "M06", calendar: "IsO8601" }; const result = instance.since(arg); TemporalHelpers.assertDuration(result, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Calendar is case-insensitive"); + +arg.calendar = "\u0130SO8601"; +assert.throws( + RangeError, + () => instance.since(arg), + "calendar ID is capital dotted I is not lowercased" +); diff --git a/test/built-ins/Temporal/PlainYearMonth/prototype/until/argument-propertybag-calendar-case-insensitive.js b/test/built-ins/Temporal/PlainYearMonth/prototype/until/argument-propertybag-calendar-case-insensitive.js index a708ef9313..074fd1b040 100644 --- a/test/built-ins/Temporal/PlainYearMonth/prototype/until/argument-propertybag-calendar-case-insensitive.js +++ b/test/built-ins/Temporal/PlainYearMonth/prototype/until/argument-propertybag-calendar-case-insensitive.js @@ -10,8 +10,13 @@ features: [Temporal] const instance = new Temporal.PlainYearMonth(2019, 6); -const calendar = "IsO8601"; - -const arg = { year: 2019, monthCode: "M06", calendar }; +const arg = { year: 2019, monthCode: "M06", calendar: "IsO8601" }; const result = instance.until(arg); TemporalHelpers.assertDuration(result, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Calendar is case-insensitive"); + +arg.calendar = "\u0130SO8601"; +assert.throws( + RangeError, + () => instance.until(arg), + "calendar ID is capital dotted I is not lowercased" +); diff --git a/test/built-ins/Temporal/ZonedDateTime/calendar-case-insensitive.js b/test/built-ins/Temporal/ZonedDateTime/calendar-case-insensitive.js index f7b725c797..d9df704f27 100644 --- a/test/built-ins/Temporal/ZonedDateTime/calendar-case-insensitive.js +++ b/test/built-ins/Temporal/ZonedDateTime/calendar-case-insensitive.js @@ -7,7 +7,14 @@ description: Calendar names are case-insensitive features: [Temporal] ---*/ -const arg = "iSo8601"; +let arg = "iSo8601"; const result = new Temporal.ZonedDateTime(0n, "UTC", arg); assert.sameValue(result.calendarId, "iso8601", "Calendar is case-insensitive"); + +arg = "\u0130SO8601"; +assert.throws( + RangeError, + () => new Temporal.ZonedDateTime(0n, "UTC", arg), + "calendar ID is capital dotted I is not lowercased" +); diff --git a/test/built-ins/Temporal/ZonedDateTime/compare/argument-propertybag-calendar-case-insensitive.js b/test/built-ins/Temporal/ZonedDateTime/compare/argument-propertybag-calendar-case-insensitive.js index 986ede0cbc..ca19916005 100644 --- a/test/built-ins/Temporal/ZonedDateTime/compare/argument-propertybag-calendar-case-insensitive.js +++ b/test/built-ins/Temporal/ZonedDateTime/compare/argument-propertybag-calendar-case-insensitive.js @@ -7,13 +7,23 @@ description: The calendar name is case-insensitive features: [Temporal] ---*/ -const calendar = "IsO8601"; - const timeZone = new Temporal.TimeZone("UTC"); const datetime = new Temporal.ZonedDateTime(0n, timeZone); -const arg = { year: 1970, monthCode: "M01", day: 1, timeZone, calendar }; +const arg = { year: 1970, monthCode: "M01", day: 1, timeZone, calendar: "IsO8601" }; const result1 = Temporal.ZonedDateTime.compare(arg, datetime); assert.sameValue(result1, 0, "Calendar is case-insensitive (first argument)"); const result2 = Temporal.ZonedDateTime.compare(datetime, arg); assert.sameValue(result2, 0, "Calendar is case-insensitive (second argument)"); + +arg.calendar = "\u0130SO8601"; +assert.throws( + RangeError, + () => Temporal.ZonedDateTime.compare(arg, datetime), + "calendar ID is capital dotted I is not lowercased (first argument)" +); +assert.throws( + RangeError, + () => Temporal.ZonedDateTime.compare(datetime, arg), + "calendar ID is capital dotted I is not lowercased (second argument)" +); diff --git a/test/built-ins/Temporal/ZonedDateTime/from/argument-propertybag-calendar-case-insensitive.js b/test/built-ins/Temporal/ZonedDateTime/from/argument-propertybag-calendar-case-insensitive.js index 2efae5a2ba..3baa8ff31f 100644 --- a/test/built-ins/Temporal/ZonedDateTime/from/argument-propertybag-calendar-case-insensitive.js +++ b/test/built-ins/Temporal/ZonedDateTime/from/argument-propertybag-calendar-case-insensitive.js @@ -7,9 +7,14 @@ description: The calendar name is case-insensitive features: [Temporal] ---*/ -const calendar = "IsO8601"; - const timeZone = new Temporal.TimeZone("UTC"); -const arg = { year: 1970, monthCode: "M01", day: 1, timeZone, calendar }; +const arg = { year: 1970, monthCode: "M01", day: 1, timeZone, calendar: "IsO8601" }; const result = Temporal.ZonedDateTime.from(arg); assert.sameValue(result.calendarId, "iso8601", "Calendar is case-insensitive"); + +arg.calendar = "\u0130SO8601"; +assert.throws( + RangeError, + () => Temporal.ZonedDateTime.from(arg), + "calendar ID is capital dotted I is not lowercased" +); diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/equals/argument-propertybag-calendar-case-insensitive.js b/test/built-ins/Temporal/ZonedDateTime/prototype/equals/argument-propertybag-calendar-case-insensitive.js index b4f97b6629..fe11b2b851 100644 --- a/test/built-ins/Temporal/ZonedDateTime/prototype/equals/argument-propertybag-calendar-case-insensitive.js +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/equals/argument-propertybag-calendar-case-insensitive.js @@ -10,8 +10,13 @@ features: [Temporal] const timeZone = new Temporal.TimeZone("UTC"); const instance = new Temporal.ZonedDateTime(0n, timeZone); -const calendar = "IsO8601"; - -const arg = { year: 1970, monthCode: "M01", day: 1, timeZone, calendar }; +const arg = { year: 1970, monthCode: "M01", day: 1, timeZone, calendar: "IsO8601" }; const result = instance.equals(arg); assert.sameValue(result, true, "Calendar is case-insensitive"); + +arg.calendar = "\u0130SO8601"; +assert.throws( + RangeError, + () => instance.equals(arg), + "calendar ID is capital dotted I is not lowercased" +); diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/since/argument-propertybag-calendar-case-insensitive.js b/test/built-ins/Temporal/ZonedDateTime/prototype/since/argument-propertybag-calendar-case-insensitive.js index 1d341ebc14..bc37379656 100644 --- a/test/built-ins/Temporal/ZonedDateTime/prototype/since/argument-propertybag-calendar-case-insensitive.js +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/since/argument-propertybag-calendar-case-insensitive.js @@ -11,8 +11,13 @@ features: [Temporal] const timeZone = new Temporal.TimeZone("UTC"); const instance = new Temporal.ZonedDateTime(0n, timeZone); -const calendar = "IsO8601"; - -const arg = { year: 1970, monthCode: "M01", day: 1, timeZone, calendar }; +const arg = { year: 1970, monthCode: "M01", day: 1, timeZone, calendar: "IsO8601" }; const result = instance.since(arg); TemporalHelpers.assertDuration(result, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Calendar is case-insensitive"); + +arg.calendar = "\u0130SO8601"; +assert.throws( + RangeError, + () => instance.since(arg), + "calendar ID is capital dotted I is not lowercased" +); diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/until/argument-propertybag-calendar-case-insensitive.js b/test/built-ins/Temporal/ZonedDateTime/prototype/until/argument-propertybag-calendar-case-insensitive.js index c822b03b28..1dd8006d86 100644 --- a/test/built-ins/Temporal/ZonedDateTime/prototype/until/argument-propertybag-calendar-case-insensitive.js +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/until/argument-propertybag-calendar-case-insensitive.js @@ -11,8 +11,13 @@ features: [Temporal] const timeZone = new Temporal.TimeZone("UTC"); const instance = new Temporal.ZonedDateTime(0n, timeZone); -const calendar = "IsO8601"; - -const arg = { year: 1970, monthCode: "M01", day: 1, timeZone, calendar }; +const arg = { year: 1970, monthCode: "M01", day: 1, timeZone, calendar: "IsO8601" }; const result = instance.until(arg); TemporalHelpers.assertDuration(result, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Calendar is case-insensitive"); + +arg.calendar = "\u0130SO8601"; +assert.throws( + RangeError, + () => instance.until(arg), + "calendar ID is capital dotted I is not lowercased" +); diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/withCalendar/calendar-case-insensitive.js b/test/built-ins/Temporal/ZonedDateTime/prototype/withCalendar/calendar-case-insensitive.js index 5fdfeee782..69ae9b6229 100644 --- a/test/built-ins/Temporal/ZonedDateTime/prototype/withCalendar/calendar-case-insensitive.js +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/withCalendar/calendar-case-insensitive.js @@ -31,6 +31,13 @@ const instance = new Temporal.ZonedDateTime(1_000_000_000_000_000_000n, "UTC", { yearOfWeek() {}, }); -const arg = "iSo8601"; +let arg = "iSo8601"; const result = instance.withCalendar(arg); assert.sameValue(result.calendarId, "iso8601", "Calendar is case-insensitive"); + +arg = "\u0130SO8601"; +assert.throws( + RangeError, + () => instance.withCalendar(arg), + "calendar ID is ASCII-lowercased, capital dotted I is not lowercased" +); diff --git a/test/intl402/Temporal/PlainDate/canonicalize-calendar.js b/test/intl402/Temporal/PlainDate/canonicalize-calendar.js new file mode 100644 index 0000000000..95dde46890 --- /dev/null +++ b/test/intl402/Temporal/PlainDate/canonicalize-calendar.js @@ -0,0 +1,11 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindate +description: Calendar ID is canonicalized +features: [Temporal] +---*/ + +const result = new Temporal.PlainDate(2024, 7, 2, "islamicc"); +assert.sameValue(result.calendarId, "islamic-civil", "calendar ID is canonicalized"); diff --git a/test/intl402/Temporal/PlainDate/from/canonicalize-calendar.js b/test/intl402/Temporal/PlainDate/from/canonicalize-calendar.js new file mode 100644 index 0000000000..b9e7436062 --- /dev/null +++ b/test/intl402/Temporal/PlainDate/from/canonicalize-calendar.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindate.from +description: Calendar ID is canonicalized +features: [Temporal] +---*/ + +[ + "2024-07-02[u-ca=islamicc]", + { year: 1445, month: 12, day: 25, calendar: "islamicc" }, +].forEach((arg) => { + const result = Temporal.PlainDate.from(arg); + assert.sameValue(result.calendarId, "islamic-civil", "calendar ID is canonicalized"); +}); diff --git a/test/intl402/Temporal/PlainDate/prototype/equals/canonicalize-calendar.js b/test/intl402/Temporal/PlainDate/prototype/equals/canonicalize-calendar.js new file mode 100644 index 0000000000..e6f136502f --- /dev/null +++ b/test/intl402/Temporal/PlainDate/prototype/equals/canonicalize-calendar.js @@ -0,0 +1,15 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindate.prototype.equals +description: Calendar ID is canonicalized +features: [Temporal] +---*/ + +const instance = new Temporal.PlainDate(2024, 7, 2, "islamic-civil"); + +[ + "2024-07-02[u-ca=islamicc]", + { year: 1445, month: 12, day: 25, calendar: "islamicc" }, +].forEach((arg) => assert(instance.equals(arg), "calendar ID is canonicalized")); diff --git a/test/intl402/Temporal/PlainDate/prototype/since/canonicalize-calendar.js b/test/intl402/Temporal/PlainDate/prototype/since/canonicalize-calendar.js new file mode 100644 index 0000000000..992d2865b0 --- /dev/null +++ b/test/intl402/Temporal/PlainDate/prototype/since/canonicalize-calendar.js @@ -0,0 +1,18 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindate.prototype.since +description: Calendar ID is canonicalized +features: [Temporal] +---*/ + +const instance = new Temporal.PlainDate(2024, 7, 2, "islamic-civil"); + +[ + "2024-07-02[u-ca=islamicc]", + { year: 1445, month: 12, day: 25, calendar: "islamicc" }, +].forEach((arg) => { + const result = instance.since(arg); // would throw if calendar was not canonicalized + assert(result.blank, "calendar ID is canonicalized"); +}); diff --git a/test/intl402/Temporal/PlainDate/prototype/until/canonicalize-calendar.js b/test/intl402/Temporal/PlainDate/prototype/until/canonicalize-calendar.js new file mode 100644 index 0000000000..880a598de4 --- /dev/null +++ b/test/intl402/Temporal/PlainDate/prototype/until/canonicalize-calendar.js @@ -0,0 +1,18 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindate.prototype.until +description: Calendar ID is canonicalized +features: [Temporal] +---*/ + +const instance = new Temporal.PlainDate(2024, 7, 2, "islamic-civil"); + +[ + "2024-07-02[u-ca=islamicc]", + { year: 1445, month: 12, day: 25, calendar: "islamicc" }, +].forEach((arg) => { + const result = instance.until(arg); // would throw if calendar was not canonicalized + assert(result.blank, "calendar ID is canonicalized"); +}); diff --git a/test/intl402/Temporal/PlainDate/prototype/withCalendar/canonicalize-calendar.js b/test/intl402/Temporal/PlainDate/prototype/withCalendar/canonicalize-calendar.js new file mode 100644 index 0000000000..876495a9c7 --- /dev/null +++ b/test/intl402/Temporal/PlainDate/prototype/withCalendar/canonicalize-calendar.js @@ -0,0 +1,12 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindate.prototype.withcalendar +description: Calendar ID is canonicalized +features: [Temporal] +---*/ + +const instance = new Temporal.PlainDate(2024, 7, 2); +const result = instance.withCalendar("islamicc"); +assert.sameValue(result.calendarId, "islamic-civil", "calendar ID is canonicalized"); diff --git a/test/intl402/Temporal/PlainDateTime/canonicalize-calendar.js b/test/intl402/Temporal/PlainDateTime/canonicalize-calendar.js new file mode 100644 index 0000000000..f538c41062 --- /dev/null +++ b/test/intl402/Temporal/PlainDateTime/canonicalize-calendar.js @@ -0,0 +1,11 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindatetime +description: Calendar ID is canonicalized +features: [Temporal] +---*/ + +const result = new Temporal.PlainDateTime(2024, 7, 2, 12, 34, 56, 987, 654, 321, "islamicc"); +assert.sameValue(result.calendarId, "islamic-civil", "calendar ID is canonicalized"); diff --git a/test/intl402/Temporal/PlainDateTime/from/canonicalize-calendar.js b/test/intl402/Temporal/PlainDateTime/from/canonicalize-calendar.js new file mode 100644 index 0000000000..8ef0f06dc7 --- /dev/null +++ b/test/intl402/Temporal/PlainDateTime/from/canonicalize-calendar.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 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 ID is canonicalized +features: [Temporal] +---*/ + +[ + "2024-07-02T12:34[u-ca=islamicc]", + { year: 1445, month: 12, day: 25, hour: 12, minute: 34, calendar: "islamicc" }, +].forEach((arg) => { + const result = Temporal.PlainDateTime.from(arg); + assert.sameValue(result.calendarId, "islamic-civil", "calendar ID is canonicalized"); +}); diff --git a/test/intl402/Temporal/PlainDateTime/prototype/equals/canonicalize-calendar.js b/test/intl402/Temporal/PlainDateTime/prototype/equals/canonicalize-calendar.js new file mode 100644 index 0000000000..32448d96f6 --- /dev/null +++ b/test/intl402/Temporal/PlainDateTime/prototype/equals/canonicalize-calendar.js @@ -0,0 +1,15 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindatetime.prototype.equals +description: Calendar ID is canonicalized +features: [Temporal] +---*/ + +const instance = new Temporal.PlainDateTime(2024, 7, 2, 12, 34, 0, 0, 0, 0, "islamic-civil"); + +[ + "2024-07-02T12:34[u-ca=islamicc]", + { year: 1445, month: 12, day: 25, hour: 12, minute: 34, calendar: "islamicc" }, +].forEach((arg) => assert(instance.equals(arg), "calendar ID is canonicalized")); diff --git a/test/intl402/Temporal/PlainDateTime/prototype/since/canonicalize-calendar.js b/test/intl402/Temporal/PlainDateTime/prototype/since/canonicalize-calendar.js new file mode 100644 index 0000000000..00fbf63b91 --- /dev/null +++ b/test/intl402/Temporal/PlainDateTime/prototype/since/canonicalize-calendar.js @@ -0,0 +1,18 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindatetime.prototype.since +description: Calendar ID is canonicalized +features: [Temporal] +---*/ + +const instance = new Temporal.PlainDateTime(2024, 7, 2, 12, 34, 0, 0, 0, 0, "islamic-civil"); + +[ + "2024-07-02T12:34[u-ca=islamicc]", + { year: 1445, month: 12, day: 25, hour: 12, minute: 34, calendar: "islamicc" }, +].forEach((arg) => { + const result = instance.since(arg); // would throw if calendar was not canonicalized + assert(result.blank, "calendar ID is canonicalized"); +}); diff --git a/test/intl402/Temporal/PlainDateTime/prototype/until/canonicalize-calendar.js b/test/intl402/Temporal/PlainDateTime/prototype/until/canonicalize-calendar.js new file mode 100644 index 0000000000..172ef87b1e --- /dev/null +++ b/test/intl402/Temporal/PlainDateTime/prototype/until/canonicalize-calendar.js @@ -0,0 +1,18 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindatetime.prototype.until +description: Calendar ID is canonicalized +features: [Temporal] +---*/ + +const instance = new Temporal.PlainDateTime(2024, 7, 2, 12, 34, 0, 0, 0, 0, "islamic-civil"); + +[ + "2024-07-02T12:34[u-ca=islamicc]", + { year: 1445, month: 12, day: 25, hour: 12, minute: 34, calendar: "islamicc" }, +].forEach((arg) => { + const result = instance.until(arg); // would throw if calendar was not canonicalized + assert(result.blank, "calendar ID is canonicalized"); +}); diff --git a/test/intl402/Temporal/PlainDateTime/prototype/withCalendar/canonicalize-calendar.js b/test/intl402/Temporal/PlainDateTime/prototype/withCalendar/canonicalize-calendar.js new file mode 100644 index 0000000000..2deca2c79d --- /dev/null +++ b/test/intl402/Temporal/PlainDateTime/prototype/withCalendar/canonicalize-calendar.js @@ -0,0 +1,12 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindatetime.prototype.withcalendar +description: Calendar ID is canonicalized +features: [Temporal] +---*/ + +const instance = new Temporal.PlainDateTime(2024, 7, 2, 12, 34); +const result = instance.withCalendar("islamicc"); +assert.sameValue(result.calendarId, "islamic-civil", "calendar ID is canonicalized"); diff --git a/test/intl402/Temporal/PlainMonthDay/canonicalize-calendar.js b/test/intl402/Temporal/PlainMonthDay/canonicalize-calendar.js new file mode 100644 index 0000000000..8d3a518adc --- /dev/null +++ b/test/intl402/Temporal/PlainMonthDay/canonicalize-calendar.js @@ -0,0 +1,11 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plainmonthday +description: Calendar ID is canonicalized +features: [Temporal] +---*/ + +const result = new Temporal.PlainMonthDay(2, 11, "islamicc", 1972); +assert.sameValue(result.calendarId, "islamic-civil", "calendar ID is canonicalized"); diff --git a/test/intl402/Temporal/PlainMonthDay/from/canonicalize-calendar.js b/test/intl402/Temporal/PlainMonthDay/from/canonicalize-calendar.js new file mode 100644 index 0000000000..41770f3962 --- /dev/null +++ b/test/intl402/Temporal/PlainMonthDay/from/canonicalize-calendar.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plainmonthday.from +description: Calendar ID is canonicalized +features: [Temporal] +---*/ + +[ + "1972-02-11[u-ca=islamicc]", + { monthCode: "M12", day: 25, calendar: "islamicc" }, +].forEach((arg) => { + const result = Temporal.PlainMonthDay.from(arg); + assert.sameValue(result.calendarId, "islamic-civil", "calendar ID is canonicalized"); +}); diff --git a/test/intl402/Temporal/PlainMonthDay/prototype/equals/canonicalize-calendar.js b/test/intl402/Temporal/PlainMonthDay/prototype/equals/canonicalize-calendar.js new file mode 100644 index 0000000000..603b582c24 --- /dev/null +++ b/test/intl402/Temporal/PlainMonthDay/prototype/equals/canonicalize-calendar.js @@ -0,0 +1,15 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plainmonthday.prototype.equals +description: Calendar ID is canonicalized +features: [Temporal] +---*/ + +const instance = new Temporal.PlainMonthDay(2, 11, "islamic-civil", 1972); + +[ + "1972-02-11[u-ca=islamicc]", + { monthCode: "M12", day: 25, calendar: "islamicc" }, +].forEach((arg) => assert(instance.equals(arg), "calendar ID is canonicalized")); diff --git a/test/intl402/Temporal/PlainYearMonth/canonicalize-calendar.js b/test/intl402/Temporal/PlainYearMonth/canonicalize-calendar.js new file mode 100644 index 0000000000..b1e7d417a2 --- /dev/null +++ b/test/intl402/Temporal/PlainYearMonth/canonicalize-calendar.js @@ -0,0 +1,11 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plainyearmonth +description: Calendar ID is canonicalized +features: [Temporal] +---*/ + +const result = new Temporal.PlainYearMonth(2024, 6, "islamicc", 8); +assert.sameValue(result.calendarId, "islamic-civil", "calendar ID is canonicalized"); diff --git a/test/intl402/Temporal/PlainYearMonth/from/canonicalize-calendar.js b/test/intl402/Temporal/PlainYearMonth/from/canonicalize-calendar.js new file mode 100644 index 0000000000..93326b44bf --- /dev/null +++ b/test/intl402/Temporal/PlainYearMonth/from/canonicalize-calendar.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 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 ID is canonicalized +features: [Temporal] +---*/ + +[ + "2024-06-08[u-ca=islamicc]", + { year: 1445, month: 12, calendar: "islamicc" }, +].forEach((arg) => { + const result = Temporal.PlainYearMonth.from(arg); + assert.sameValue(result.calendarId, "islamic-civil", "calendar ID is canonicalized"); +}); diff --git a/test/intl402/Temporal/PlainYearMonth/prototype/equals/canonicalize-calendar.js b/test/intl402/Temporal/PlainYearMonth/prototype/equals/canonicalize-calendar.js new file mode 100644 index 0000000000..c026dafe61 --- /dev/null +++ b/test/intl402/Temporal/PlainYearMonth/prototype/equals/canonicalize-calendar.js @@ -0,0 +1,15 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plainyearmonth.prototype.equals +description: Calendar ID is canonicalized +features: [Temporal] +---*/ + +const instance = new Temporal.PlainYearMonth(2024, 6, "islamic-civil", 8); + +[ + "2024-06-08[u-ca=islamicc]", + { year: 1445, month: 12, calendar: "islamicc" }, +].forEach((arg) => assert(instance.equals(arg), "calendar ID is canonicalized")); diff --git a/test/intl402/Temporal/PlainYearMonth/prototype/since/canonicalize-calendar.js b/test/intl402/Temporal/PlainYearMonth/prototype/since/canonicalize-calendar.js new file mode 100644 index 0000000000..b623c667fa --- /dev/null +++ b/test/intl402/Temporal/PlainYearMonth/prototype/since/canonicalize-calendar.js @@ -0,0 +1,18 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plainyearmonth.prototype.since +description: Calendar ID is canonicalized +features: [Temporal] +---*/ + +const instance = new Temporal.PlainYearMonth(2024, 6, "islamic-civil", 8); + +[ + "2024-06-08[u-ca=islamicc]", + { year: 1445, month: 12, calendar: "islamicc" }, +].forEach((arg) => { + const result = instance.since(arg); // would throw if calendar was not canonicalized + assert(result.blank, "calendar ID is canonicalized"); +}); diff --git a/test/intl402/Temporal/PlainYearMonth/prototype/until/canonicalize-calendar.js b/test/intl402/Temporal/PlainYearMonth/prototype/until/canonicalize-calendar.js new file mode 100644 index 0000000000..2135db7095 --- /dev/null +++ b/test/intl402/Temporal/PlainYearMonth/prototype/until/canonicalize-calendar.js @@ -0,0 +1,18 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plainyearmonth.prototype.until +description: Calendar ID is canonicalized +features: [Temporal] +---*/ + +const instance = new Temporal.PlainYearMonth(2024, 6, "islamic-civil", 8); + +[ + "2024-06-08[u-ca=islamicc]", + { year: 1445, month: 12, calendar: "islamicc" }, +].forEach((arg) => { + const result = instance.until(arg); // would throw if calendar was not canonicalized + assert(result.blank, "calendar ID is canonicalized"); +}); diff --git a/test/intl402/Temporal/ZonedDateTime/canonicalize-calendar.js b/test/intl402/Temporal/ZonedDateTime/canonicalize-calendar.js new file mode 100644 index 0000000000..a1ddae9da2 --- /dev/null +++ b/test/intl402/Temporal/ZonedDateTime/canonicalize-calendar.js @@ -0,0 +1,11 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.zoneddatetime +description: Calendar ID is canonicalized +features: [Temporal] +---*/ + +const result = new Temporal.ZonedDateTime(1719923640_000_000_000n, "UTC", "islamicc"); +assert.sameValue(result.calendarId, "islamic-civil", "calendar ID is canonicalized"); diff --git a/test/intl402/Temporal/ZonedDateTime/from/canonicalize-calendar.js b/test/intl402/Temporal/ZonedDateTime/from/canonicalize-calendar.js new file mode 100644 index 0000000000..9cd35739d0 --- /dev/null +++ b/test/intl402/Temporal/ZonedDateTime/from/canonicalize-calendar.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.zoneddatetime.from +description: Calendar ID is canonicalized +features: [Temporal] +---*/ + +[ + "2024-07-02T12:34+00:00[UTC][u-ca=islamicc]", + { year: 1445, month: 12, day: 25, hour: 12, minute: 34, calendar: "islamicc", timeZone: "UTC" }, +].forEach((arg) => { + const result = Temporal.ZonedDateTime.from(arg); + assert.sameValue(result.calendarId, "islamic-civil", "calendar ID is canonicalized"); +}); diff --git a/test/intl402/Temporal/ZonedDateTime/prototype/equals/canonicalize-calendar.js b/test/intl402/Temporal/ZonedDateTime/prototype/equals/canonicalize-calendar.js new file mode 100644 index 0000000000..1943a68101 --- /dev/null +++ b/test/intl402/Temporal/ZonedDateTime/prototype/equals/canonicalize-calendar.js @@ -0,0 +1,15 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.zoneddatetime.prototype.equals +description: Calendar ID is canonicalized +features: [Temporal] +---*/ + +const instance = new Temporal.ZonedDateTime(1719923640_000_000_000n, "UTC", "islamic-civil"); + +[ + "2024-07-02T12:34+00:00[UTC][u-ca=islamicc]", + { year: 1445, month: 12, day: 25, hour: 12, minute: 34, calendar: "islamicc", timeZone: "UTC" }, +].forEach((arg) => assert(instance.equals(arg), "calendar ID is canonicalized")); diff --git a/test/intl402/Temporal/ZonedDateTime/prototype/since/canonicalize-calendar.js b/test/intl402/Temporal/ZonedDateTime/prototype/since/canonicalize-calendar.js new file mode 100644 index 0000000000..1a5894aa8a --- /dev/null +++ b/test/intl402/Temporal/ZonedDateTime/prototype/since/canonicalize-calendar.js @@ -0,0 +1,18 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.zoneddatetime.prototype.since +description: Calendar ID is canonicalized +features: [Temporal] +---*/ + +const instance = new Temporal.ZonedDateTime(1719923640_000_000_000n, "UTC", "islamic-civil"); + +[ + "2024-07-02T12:34+00:00[UTC][u-ca=islamicc]", + { year: 1445, month: 12, day: 25, hour: 12, minute: 34, calendar: "islamicc", timeZone: "UTC" }, +].forEach((arg) => { + const result = instance.since(arg); // would throw if calendar was not canonicalized + assert(result.blank, "calendar ID is canonicalized"); +}); diff --git a/test/intl402/Temporal/ZonedDateTime/prototype/until/canonicalize-calendar.js b/test/intl402/Temporal/ZonedDateTime/prototype/until/canonicalize-calendar.js new file mode 100644 index 0000000000..a950b1147f --- /dev/null +++ b/test/intl402/Temporal/ZonedDateTime/prototype/until/canonicalize-calendar.js @@ -0,0 +1,18 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.zoneddatetime.prototype.until +description: Calendar ID is canonicalized +features: [Temporal] +---*/ + +const instance = new Temporal.ZonedDateTime(1719923640_000_000_000n, "UTC", "islamic-civil"); + +[ + "2024-07-02T12:34+00:00[UTC][u-ca=islamicc]", + { year: 1445, month: 12, day: 25, hour: 12, minute: 34, calendar: "islamicc", timeZone: "UTC" }, +].forEach((arg) => { + const result = instance.until(arg); // would throw if calendar was not canonicalized + assert(result.blank, "calendar ID is canonicalized"); +}); diff --git a/test/intl402/Temporal/ZonedDateTime/prototype/withCalendar/canonicalize-calendar.js b/test/intl402/Temporal/ZonedDateTime/prototype/withCalendar/canonicalize-calendar.js new file mode 100644 index 0000000000..67199ab360 --- /dev/null +++ b/test/intl402/Temporal/ZonedDateTime/prototype/withCalendar/canonicalize-calendar.js @@ -0,0 +1,12 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.zonedatetime.prototype.withcalendar +description: Calendar ID is canonicalized +features: [Temporal] +---*/ + +const instance = new Temporal.ZonedDateTime(1719923640_000_000_000n, "UTC"); +const result = instance.withCalendar("islamicc"); +assert.sameValue(result.calendarId, "islamic-civil", "calendar ID is canonicalized"); diff --git a/test/staging/Intl402/Temporal/old/islamic-calendars.js b/test/staging/Intl402/Temporal/old/islamic-calendars.js index 34ff2755f0..47bad664c2 100644 --- a/test/staging/Intl402/Temporal/old/islamic-calendars.js +++ b/test/staging/Intl402/Temporal/old/islamic-calendars.js @@ -3,7 +3,7 @@ /*--- esid: sec-temporal-intl -description: Islamic calendars (note there are 6 variants) +description: Islamic calendars (note there are 5 variants) features: [Temporal] ---*/ @@ -37,15 +37,6 @@ const tests = [ isoMonth: 7, isoDay: 19 }, - { - calendar: "islamicc", // deprecated version of islamic-civil - inLeapYear: true, - daysInYear: 355, - daysInMonth12: 30, - isoYear: 2023, - isoMonth: 7, - isoDay: 19 - }, { calendar: "islamic-rgsa", inLeapYear: false,