From 96bc38f5d9599a0a9b6dd70ca7919523d60ef814 Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Mon, 16 Oct 2023 12:28:51 -0700 Subject: [PATCH] Temporal: Exhaustive coverage for compare() methods This adds coverage for each possible outcome of compare(), where each unit is greater, lesser, or equal. --- .../Temporal/Duration/compare/exhaustive.js | 513 ++++++++++++++++++ .../Temporal/Instant/compare/exhaustive.js | 24 + .../Temporal/PlainDate/compare/exhaustive.js | 68 +++ .../PlainDateTime/compare/exhaustive.js | 164 ++++++ .../Temporal/PlainTime/compare/exhaustive.js | 116 ++++ .../PlainYearMonth/compare/exhaustive.js | 47 ++ .../ZonedDateTime/compare/exhaustive.js | 29 + 7 files changed, 961 insertions(+) create mode 100644 test/built-ins/Temporal/Duration/compare/exhaustive.js create mode 100644 test/built-ins/Temporal/Instant/compare/exhaustive.js create mode 100644 test/built-ins/Temporal/PlainDate/compare/exhaustive.js create mode 100644 test/built-ins/Temporal/PlainDateTime/compare/exhaustive.js create mode 100644 test/built-ins/Temporal/PlainTime/compare/exhaustive.js create mode 100644 test/built-ins/Temporal/PlainYearMonth/compare/exhaustive.js create mode 100644 test/built-ins/Temporal/ZonedDateTime/compare/exhaustive.js diff --git a/test/built-ins/Temporal/Duration/compare/exhaustive.js b/test/built-ins/Temporal/Duration/compare/exhaustive.js new file mode 100644 index 0000000000..090b87a147 --- /dev/null +++ b/test/built-ins/Temporal/Duration/compare/exhaustive.js @@ -0,0 +1,513 @@ +// Copyright (C) 2023 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.duration.compare +description: Tests for compare() with each possible outcome +features: [Temporal] +---*/ + +const plainDate = new Temporal.PlainDate(2000, 1, 1); + +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(6), + new Temporal.Duration(5), + { relativeTo: plainDate } + ), + 1, + "years >, relativeTo PlainDate" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(3), + new Temporal.Duration(4), + { relativeTo: plainDate } + ), + -1, + "years <, relativeTo PlainDate" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(2, 6), + new Temporal.Duration(2, 5), + { relativeTo: plainDate } + ), + 1, + "months >, relativeTo PlainDate" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(4, 3), + new Temporal.Duration(4, 4), + { relativeTo: plainDate } + ), + -1, + "months <, relativeTo PlainDate" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(2, 1, 6), + new Temporal.Duration(2, 1, 5), + { relativeTo: plainDate } + ), + 1, + "weeks >, relativeTo PlainDate" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(4, 7, 3), + new Temporal.Duration(4, 7, 4), + { relativeTo: plainDate } + ), + -1, + "weeks <, relativeTo PlainDate" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(2, 1, 3, 6), + new Temporal.Duration(2, 1, 3, 5), + { relativeTo: plainDate } + ), + 1, + "days >, relativeTo PlainDate" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(4, 7, 2, 3), + new Temporal.Duration(4, 7, 2, 4), + { relativeTo: plainDate } + ), + -1, + "days <, relativeTo PlainDate" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(2, 1, 3, 12, 6), + new Temporal.Duration(2, 1, 3, 12, 5), + { relativeTo: plainDate } + ), + 1, + "hours >, relativeTo PlainDate" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(4, 7, 2, 40, 3), + new Temporal.Duration(4, 7, 2, 40, 4), + { relativeTo: plainDate } + ), + -1, + "hours <, relativeTo PlainDate" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(2, 1, 3, 12, 6, 6), + new Temporal.Duration(2, 1, 3, 12, 6, 5), + { relativeTo: plainDate } + ), + 1, + "minutes >, relativeTo PlainDate" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(4, 7, 2, 40, 12, 3), + new Temporal.Duration(4, 7, 2, 40, 12, 4), + { relativeTo: plainDate } + ), + -1, + "minutes <, relativeTo PlainDate" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(2, 1, 3, 12, 6, 30, 6), + new Temporal.Duration(2, 1, 3, 12, 6, 30, 5), + { relativeTo: plainDate } + ), + 1, + "seconds >, relativeTo PlainDate" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(4, 7, 2, 40, 12, 15, 3), + new Temporal.Duration(4, 7, 2, 40, 12, 15, 4), + { relativeTo: plainDate } + ), + -1, + "seconds <, relativeTo PlainDate" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(2, 1, 3, 12, 6, 30, 15, 6), + new Temporal.Duration(2, 1, 3, 12, 6, 30, 15, 5), + { relativeTo: plainDate } + ), + 1, + "milliseconds >, relativeTo PlainDate" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 3), + new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 4), + { relativeTo: plainDate } + ), + -1, + "milliseconds <, relativeTo PlainDate" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(2, 1, 3, 12, 6, 30, 15, 222, 6), + new Temporal.Duration(2, 1, 3, 12, 6, 30, 15, 222, 5), + { relativeTo: plainDate } + ), + 1, + "microseconds >, relativeTo PlainDate" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 333, 3), + new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 333, 4), + { relativeTo: plainDate } + ), + -1, + "microseconds <, relativeTo PlainDate" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(2, 1, 3, 12, 6, 30, 15, 222, 444, 6), + new Temporal.Duration(2, 1, 3, 12, 6, 30, 15, 222, 444, 5), + { relativeTo: plainDate } + ), + 1, + "nanoseconds >, relativeTo PlainDate" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 333, 777, 3), + new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 333, 777, 4), + { relativeTo: plainDate } + ), + -1, + "nanoseconds <, relativeTo PlainDate" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 333, 777, 111), + new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 333, 777, 111), + { relativeTo: plainDate } + ), + 0, + "equal, relativeTo PlainDate" +); + +const zonedDateTime = new Temporal.ZonedDateTime(0n, "UTC"); + +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(6), + new Temporal.Duration(5), + { relativeTo: zonedDateTime } + ), + 1, + "years >, relativeTo ZonedDateTime" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(3), + new Temporal.Duration(4), + { relativeTo: zonedDateTime } + ), + -1, + "years <, relativeTo ZonedDateTime" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(2, 6), + new Temporal.Duration(2, 5), + { relativeTo: zonedDateTime } + ), + 1, + "months >, relativeTo ZonedDateTime" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(4, 3), + new Temporal.Duration(4, 4), + { relativeTo: zonedDateTime } + ), + -1, + "months <, relativeTo ZonedDateTime" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(2, 1, 6), + new Temporal.Duration(2, 1, 5), + { relativeTo: zonedDateTime } + ), + 1, + "weeks >, relativeTo ZonedDateTime" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(4, 7, 3), + new Temporal.Duration(4, 7, 4), + { relativeTo: zonedDateTime } + ), + -1, + "weeks <, relativeTo ZonedDateTime" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(2, 1, 3, 6), + new Temporal.Duration(2, 1, 3, 5), + { relativeTo: zonedDateTime } + ), + 1, + "days >, relativeTo ZonedDateTime" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(4, 7, 2, 3), + new Temporal.Duration(4, 7, 2, 4), + { relativeTo: zonedDateTime } + ), + -1, + "days <, relativeTo ZonedDateTime" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(2, 1, 3, 12, 6), + new Temporal.Duration(2, 1, 3, 12, 5), + { relativeTo: zonedDateTime } + ), + 1, + "hours >, relativeTo ZonedDateTime" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(4, 7, 2, 40, 3), + new Temporal.Duration(4, 7, 2, 40, 4), + { relativeTo: zonedDateTime } + ), + -1, + "hours <, relativeTo ZonedDateTime" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(2, 1, 3, 12, 6, 6), + new Temporal.Duration(2, 1, 3, 12, 6, 5), + { relativeTo: zonedDateTime } + ), + 1, + "minutes >, relativeTo ZonedDateTime" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(4, 7, 2, 40, 12, 3), + new Temporal.Duration(4, 7, 2, 40, 12, 4), + { relativeTo: zonedDateTime } + ), + -1, + "minutes <, relativeTo ZonedDateTime" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(2, 1, 3, 12, 6, 30, 6), + new Temporal.Duration(2, 1, 3, 12, 6, 30, 5), + { relativeTo: zonedDateTime } + ), + 1, + "seconds >, relativeTo ZonedDateTime" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(4, 7, 2, 40, 12, 15, 3), + new Temporal.Duration(4, 7, 2, 40, 12, 15, 4), + { relativeTo: zonedDateTime } + ), + -1, + "seconds <, relativeTo ZonedDateTime" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(2, 1, 3, 12, 6, 30, 15, 6), + new Temporal.Duration(2, 1, 3, 12, 6, 30, 15, 5), + { relativeTo: zonedDateTime } + ), + 1, + "milliseconds >, relativeTo ZonedDateTime" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 3), + new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 4), + { relativeTo: zonedDateTime } + ), + -1, + "milliseconds <, relativeTo ZonedDateTime" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(2, 1, 3, 12, 6, 30, 15, 222, 6), + new Temporal.Duration(2, 1, 3, 12, 6, 30, 15, 222, 5), + { relativeTo: zonedDateTime } + ), + 1, + "microseconds >, relativeTo ZonedDateTime" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 333, 3), + new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 333, 4), + { relativeTo: zonedDateTime } + ), + -1, + "microseconds <, relativeTo ZonedDateTime" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(2, 1, 3, 12, 6, 30, 15, 222, 444, 6), + new Temporal.Duration(2, 1, 3, 12, 6, 30, 15, 222, 444, 5), + { relativeTo: zonedDateTime } + ), + 1, + "nanoseconds >, relativeTo ZonedDateTime" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 333, 777, 3), + new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 333, 777, 4), + { relativeTo: zonedDateTime } + ), + -1, + "nanoseconds <, relativeTo ZonedDateTime" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 333, 777, 111), + new Temporal.Duration(4, 7, 2, 40, 12, 15, 45, 333, 777, 111), + { relativeTo: zonedDateTime } + ), + 0, + "equal, relativeTo ZonedDateTime" +); + +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(0, 0, 0, 6), + new Temporal.Duration(0, 0, 0, 5) + ), + 1, + "days >, relativeTo nothing" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(0, 0, 0, 3), + new Temporal.Duration(0, 0, 0, 4) + ), + -1, + "days <, relativeTo nothing" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(0, 0, 0, 12, 6), + new Temporal.Duration(0, 0, 0, 12, 5) + ), + 1, + "hours >, relativeTo nothing" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(0, 0, 0, 40, 3), + new Temporal.Duration(0, 0, 0, 40, 4) + ), + -1, + "hours <, relativeTo nothing" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(0, 0, 0, 12, 6, 6), + new Temporal.Duration(0, 0, 0, 12, 6, 5) + ), + 1, + "minutes >, relativeTo nothing" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(0, 0, 0, 40, 12, 3), + new Temporal.Duration(0, 0, 0, 40, 12, 4) + ), + -1, + "minutes <, relativeTo nothing" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(0, 0, 0, 12, 6, 30, 6), + new Temporal.Duration(0, 0, 0, 12, 6, 30, 5) + ), + 1, + "seconds >, relativeTo nothing" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(0, 0, 0, 40, 12, 15, 3), + new Temporal.Duration(0, 0, 0, 40, 12, 15, 4) + ), + -1, + "seconds <, relativeTo nothing" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(0, 0, 0, 12, 6, 30, 15, 6), + new Temporal.Duration(0, 0, 0, 12, 6, 30, 15, 5) + ), + 1, + "milliseconds >, relativeTo nothing" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(0, 0, 0, 40, 12, 15, 45, 3), + new Temporal.Duration(0, 0, 0, 40, 12, 15, 45, 4) + ), + -1, + "milliseconds <, relativeTo nothing" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(0, 0, 0, 12, 6, 30, 15, 222, 6), + new Temporal.Duration(0, 0, 0, 12, 6, 30, 15, 222, 5) + ), + 1, + "microseconds >, relativeTo nothing" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(0, 0, 0, 40, 12, 15, 45, 333, 3), + new Temporal.Duration(0, 0, 0, 40, 12, 15, 45, 333, 4) + ), + -1, + "microseconds <, relativeTo nothing" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(0, 0, 0, 12, 6, 30, 15, 222, 444, 6), + new Temporal.Duration(0, 0, 0, 12, 6, 30, 15, 222, 444, 5) + ), + 1, + "nanoseconds >, relativeTo nothing" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(0, 0, 0, 40, 12, 15, 45, 333, 777, 3), + new Temporal.Duration(0, 0, 0, 40, 12, 15, 45, 333, 777, 4) + ), + -1, + "nanoseconds <, relativeTo nothing" +); +assert.sameValue( + Temporal.Duration.compare( + new Temporal.Duration(0, 0, 0, 40, 12, 15, 45, 333, 777, 111), + new Temporal.Duration(0, 0, 0, 40, 12, 15, 45, 333, 777, 111) + ), + 0, + "equal, relativeTo nothing" +); diff --git a/test/built-ins/Temporal/Instant/compare/exhaustive.js b/test/built-ins/Temporal/Instant/compare/exhaustive.js new file mode 100644 index 0000000000..41a2e37097 --- /dev/null +++ b/test/built-ins/Temporal/Instant/compare/exhaustive.js @@ -0,0 +1,24 @@ +// Copyright (C) 2023 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.instant.compare +description: Tests for compare() with each possible outcome +features: [Temporal] +---*/ + +assert.sameValue( + Temporal.Instant.compare(new Temporal.Instant(1_000_000_000_000_000_000n), new Temporal.Instant(500_000_000_000_000_000n)), + 1, + ">" +); +assert.sameValue( + Temporal.Instant.compare(new Temporal.Instant(-1000n), new Temporal.Instant(1000n)), + -1, + "<" +); +assert.sameValue( + Temporal.Instant.compare(new Temporal.Instant(123_456_789n), new Temporal.Instant(123_456_789n)), + 0, + "=" +); diff --git a/test/built-ins/Temporal/PlainDate/compare/exhaustive.js b/test/built-ins/Temporal/PlainDate/compare/exhaustive.js new file mode 100644 index 0000000000..acce9f7169 --- /dev/null +++ b/test/built-ins/Temporal/PlainDate/compare/exhaustive.js @@ -0,0 +1,68 @@ +// Copyright (C) 2023 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindate.compare +description: Tests for compare() with each possible outcome +features: [Temporal] +---*/ + +const cal1 = "iso8601"; +const cal2 = new (class extends Temporal.Calendar { id = "custom"; })("iso8601"); + +assert.sameValue( + Temporal.PlainDate.compare( + new Temporal.PlainDate(2000, 5, 31, cal1), + new Temporal.PlainDate(1987, 5, 31, cal2) + ), + 1, + "year >" +); +assert.sameValue( + Temporal.PlainDate.compare( + new Temporal.PlainDate(1981, 12, 15, cal1), + new Temporal.PlainDate(2048, 12, 15, cal2) + ), + -1, + "year <" +); +assert.sameValue( + Temporal.PlainDate.compare( + new Temporal.PlainDate(2000, 5, 31, cal1), + new Temporal.PlainDate(2000, 3, 31, cal2) + ), + 1, + "month >" +); +assert.sameValue( + Temporal.PlainDate.compare( + new Temporal.PlainDate(1981, 4, 15, cal1), + new Temporal.PlainDate(1981, 12, 15, cal2) + ), + -1, + "month <" +); +assert.sameValue( + Temporal.PlainDate.compare( + new Temporal.PlainDate(2000, 5, 31, cal1), + new Temporal.PlainDate(2000, 5, 14, cal2) + ), + 1, + "day >" +); +assert.sameValue( + Temporal.PlainDate.compare( + new Temporal.PlainDate(1981, 4, 15, cal1), + new Temporal.PlainDate(1981, 4, 21, cal2) + ), + -1, + "day <" +); +assert.sameValue( + Temporal.PlainDate.compare( + new Temporal.PlainDate(2000, 5, 31, cal1), + new Temporal.PlainDate(2000, 5, 31, cal2) + ), + 0, + "=" +); diff --git a/test/built-ins/Temporal/PlainDateTime/compare/exhaustive.js b/test/built-ins/Temporal/PlainDateTime/compare/exhaustive.js new file mode 100644 index 0000000000..ae19ccbf27 --- /dev/null +++ b/test/built-ins/Temporal/PlainDateTime/compare/exhaustive.js @@ -0,0 +1,164 @@ +// Copyright (C) 2023 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindatetime.compare +description: Tests for compare() with each possible outcome +features: [Temporal] +---*/ + +const cal1 = "iso8601"; +const cal2 = new (class extends Temporal.Calendar { id = "custom"; })("iso8601"); + +assert.sameValue( + Temporal.PlainDateTime.compare( + new Temporal.PlainDateTime(2000, 5, 31, 12, 15, 45, 333, 777, 111, cal1), + new Temporal.PlainDateTime(1987, 5, 31, 12, 15, 45, 333, 777, 111, cal2) + ), + 1, + "year >" +); +assert.sameValue( + Temporal.PlainDateTime.compare( + new Temporal.PlainDateTime(1981, 12, 15, 6, 30, 15, 222, 444, 6, cal1), + new Temporal.PlainDateTime(2048, 12, 15, 6, 30, 15, 222, 444, 6, cal2) + ), + -1, + "year <" +); +assert.sameValue( + Temporal.PlainDateTime.compare( + new Temporal.PlainDateTime(2000, 5, 31, 12, 15, 45, 333, 777, 111, cal1), + new Temporal.PlainDateTime(2000, 3, 31, 12, 15, 45, 333, 777, 111, cal2) + ), + 1, + "month >" +); +assert.sameValue( + Temporal.PlainDateTime.compare( + new Temporal.PlainDateTime(1981, 4, 15, 6, 30, 15, 222, 444, 6, cal1), + new Temporal.PlainDateTime(1981, 12, 15, 6, 30, 15, 222, 444, 6, cal2) + ), + -1, + "month <" +); +assert.sameValue( + Temporal.PlainDateTime.compare( + new Temporal.PlainDateTime(2000, 5, 31, 12, 15, 45, 333, 777, 111, cal1), + new Temporal.PlainDateTime(2000, 5, 14, 12, 15, 45, 333, 777, 111, cal2) + ), + 1, + "day >" +); +assert.sameValue( + Temporal.PlainDateTime.compare( + new Temporal.PlainDateTime(1981, 4, 15, 6, 30, 15, 222, 444, 6, cal1), + new Temporal.PlainDateTime(1981, 4, 21, 6, 30, 15, 222, 444, 6, cal2) + ), + -1, + "day <" +); +assert.sameValue( + Temporal.PlainDateTime.compare( + new Temporal.PlainDateTime(2000, 5, 31, 12, 15, 45, 333, 777, 111, cal1), + new Temporal.PlainDateTime(2000, 5, 31, 6, 15, 45, 333, 777, 111, cal2) + ), + 1, + "hour >" +); +assert.sameValue( + Temporal.PlainDateTime.compare( + new Temporal.PlainDateTime(1981, 4, 15, 6, 30, 15, 222, 444, 6, cal1), + new Temporal.PlainDateTime(1981, 4, 15, 22, 30, 15, 222, 444, 6, cal2) + ), + -1, + "hour <" +); +assert.sameValue( + Temporal.PlainDateTime.compare( + new Temporal.PlainDateTime(2000, 5, 31, 12, 15, 45, 333, 777, 111, cal1), + new Temporal.PlainDateTime(2000, 5, 31, 12, 15, 22, 333, 777, 111, cal2) + ), + 1, + "minute >" +); +assert.sameValue( + Temporal.PlainDateTime.compare( + new Temporal.PlainDateTime(1981, 4, 15, 6, 30, 15, 222, 444, 6, cal1), + new Temporal.PlainDateTime(1981, 4, 15, 6, 57, 15, 222, 444, 6, cal2) + ), + -1, + "minute <" +); +assert.sameValue( + Temporal.PlainDateTime.compare( + new Temporal.PlainDateTime(2000, 5, 31, 12, 15, 6, 333, 777, 111, cal1), + new Temporal.PlainDateTime(2000, 5, 31, 12, 15, 5, 333, 777, 111, cal2) + ), + 1, + "second >" +); +assert.sameValue( + Temporal.PlainDateTime.compare( + new Temporal.PlainDateTime(1981, 4, 15, 6, 30, 3, 222, 444, 6, cal1), + new Temporal.PlainDateTime(1981, 4, 15, 6, 30, 4, 222, 444, 6, cal2) + ), + -1, + "second <" +); +assert.sameValue( + Temporal.PlainDateTime.compare( + new Temporal.PlainDateTime(2000, 5, 31, 12, 15, 45, 6, 777, 111, cal1), + new Temporal.PlainDateTime(2000, 5, 31, 12, 15, 45, 5, 777, 111, cal2) + ), + 1, + "millisecond >" +); +assert.sameValue( + Temporal.PlainDateTime.compare( + new Temporal.PlainDateTime(1981, 4, 15, 6, 30, 15, 3, 444, 6, cal1), + new Temporal.PlainDateTime(1981, 4, 15, 6, 30, 15, 4, 444, 6, cal2) + ), + -1, + "millisecond <" +); +assert.sameValue( + Temporal.PlainDateTime.compare( + new Temporal.PlainDateTime(2000, 5, 31, 12, 15, 45, 333, 6, 111, cal1), + new Temporal.PlainDateTime(2000, 5, 31, 12, 15, 45, 333, 5, 111, cal2) + ), + 1, + "microsecond >" +); +assert.sameValue( + Temporal.PlainDateTime.compare( + new Temporal.PlainDateTime(1981, 4, 15, 6, 30, 15, 222, 3, 6, cal1), + new Temporal.PlainDateTime(1981, 4, 15, 6, 30, 15, 222, 4, 6, cal2) + ), + -1, + "microsecond <" +); +assert.sameValue( + Temporal.PlainDateTime.compare( + new Temporal.PlainDateTime(2000, 5, 31, 12, 15, 45, 333, 777, 999, cal1), + new Temporal.PlainDateTime(2000, 5, 31, 12, 15, 45, 333, 777, 111, cal2) + ), + 1, + "nanosecond >" +); +assert.sameValue( + Temporal.PlainDateTime.compare( + new Temporal.PlainDateTime(1981, 4, 15, 6, 30, 15, 222, 444, 0, cal1), + new Temporal.PlainDateTime(1981, 4, 15, 6, 30, 15, 222, 444, 6, cal2) + ), + -1, + "nanosecond <" +); +assert.sameValue( + Temporal.PlainDateTime.compare( + new Temporal.PlainDateTime(2000, 5, 31, 12, 15, 45, 333, 777, 111, cal1), + new Temporal.PlainDateTime(2000, 5, 31, 12, 15, 45, 333, 777, 111, cal2) + ), + 0, + "=" +); diff --git a/test/built-ins/Temporal/PlainTime/compare/exhaustive.js b/test/built-ins/Temporal/PlainTime/compare/exhaustive.js new file mode 100644 index 0000000000..05d3688121 --- /dev/null +++ b/test/built-ins/Temporal/PlainTime/compare/exhaustive.js @@ -0,0 +1,116 @@ +// Copyright (C) 2023 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaintime.compare +description: Tests for compare() with each possible outcome +features: [Temporal] +---*/ + +const cal1 = "iso8601"; +const cal2 = new (class extends Temporal.Calendar { id = "custom"; })("iso8601"); + +assert.sameValue( + Temporal.PlainTime.compare( + new Temporal.PlainTime(12, 15, 45, 333, 777, 111, cal1), + new Temporal.PlainTime(6, 15, 45, 333, 777, 111, cal2) + ), + 1, + "hour >" +); +assert.sameValue( + Temporal.PlainTime.compare( + new Temporal.PlainTime(6, 30, 15, 222, 444, 6, cal1), + new Temporal.PlainTime(22, 30, 15, 222, 444, 6, cal2) + ), + -1, + "hour <" +); +assert.sameValue( + Temporal.PlainTime.compare( + new Temporal.PlainTime(12, 45, 15, 333, 777, 111, cal1), + new Temporal.PlainTime(12, 15, 22, 333, 777, 111, cal2) + ), + 1, + "minute >" +); +assert.sameValue( + Temporal.PlainTime.compare( + new Temporal.PlainTime(6, 30, 15, 222, 444, 6, cal1), + new Temporal.PlainTime(6, 57, 15, 222, 444, 6, cal2) + ), + -1, + "minute <" +); +assert.sameValue( + Temporal.PlainTime.compare( + new Temporal.PlainTime(12, 15, 6, 333, 777, 111, cal1), + new Temporal.PlainTime(12, 15, 5, 333, 777, 111, cal2) + ), + 1, + "second >" +); +assert.sameValue( + Temporal.PlainTime.compare( + new Temporal.PlainTime(6, 30, 3, 222, 444, 6, cal1), + new Temporal.PlainTime(6, 30, 4, 222, 444, 6, cal2) + ), + -1, + "second <" +); +assert.sameValue( + Temporal.PlainTime.compare( + new Temporal.PlainTime(12, 15, 45, 6, 777, 111, cal1), + new Temporal.PlainTime(12, 15, 45, 5, 777, 111, cal2) + ), + 1, + "millisecond >" +); +assert.sameValue( + Temporal.PlainTime.compare( + new Temporal.PlainTime(6, 30, 15, 3, 444, 6, cal1), + new Temporal.PlainTime(6, 30, 15, 4, 444, 6, cal2) + ), + -1, + "millisecond <" +); +assert.sameValue( + Temporal.PlainTime.compare( + new Temporal.PlainTime(12, 15, 45, 333, 6, 111, cal1), + new Temporal.PlainTime(12, 15, 45, 333, 5, 111, cal2) + ), + 1, + "microsecond >" +); +assert.sameValue( + Temporal.PlainTime.compare( + new Temporal.PlainTime(6, 30, 15, 222, 3, 6, cal1), + new Temporal.PlainTime(6, 30, 15, 222, 4, 6, cal2) + ), + -1, + "microsecond <" +); +assert.sameValue( + Temporal.PlainTime.compare( + new Temporal.PlainTime(12, 15, 45, 333, 777, 999, cal1), + new Temporal.PlainTime(12, 15, 45, 333, 777, 111, cal2) + ), + 1, + "nanosecond >" +); +assert.sameValue( + Temporal.PlainTime.compare( + new Temporal.PlainTime(6, 30, 15, 222, 444, 0, cal1), + new Temporal.PlainTime(6, 30, 15, 222, 444, 6, cal2) + ), + -1, + "nanosecond <" +); +assert.sameValue( + Temporal.PlainTime.compare( + new Temporal.PlainTime(12, 15, 45, 333, 777, 111, cal1), + new Temporal.PlainTime(12, 15, 45, 333, 777, 111, cal2) + ), + 0, + "=" +); diff --git a/test/built-ins/Temporal/PlainYearMonth/compare/exhaustive.js b/test/built-ins/Temporal/PlainYearMonth/compare/exhaustive.js new file mode 100644 index 0000000000..99ad5ca200 --- /dev/null +++ b/test/built-ins/Temporal/PlainYearMonth/compare/exhaustive.js @@ -0,0 +1,47 @@ +// Copyright (C) 2023 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plainyearmonth.compare +description: Tests for compare() with each possible outcome +features: [Temporal] +---*/ + +const cal1 = "iso8601"; +const cal2 = new (class extends Temporal.Calendar { id = "custom"; })("iso8601"); + +assert.sameValue( + Temporal.PlainYearMonth.compare(new Temporal.PlainYearMonth(2000, 5, cal1), new Temporal.PlainYearMonth(1987, 5, cal2)), + 1, + "year >" +); +assert.sameValue( + Temporal.PlainYearMonth.compare(new Temporal.PlainYearMonth(1981, 12, cal1), new Temporal.PlainYearMonth(2048, 12, cal2)), + -1, + "year <" +); +assert.sameValue( + Temporal.PlainYearMonth.compare(new Temporal.PlainYearMonth(2000, 5, cal1), new Temporal.PlainYearMonth(2000, 3, cal2)), + 1, + "month >" +); +assert.sameValue( + Temporal.PlainYearMonth.compare(new Temporal.PlainYearMonth(1981, 4, cal1), new Temporal.PlainYearMonth(1981, 12, cal2)), + -1, + "month <" +); +assert.sameValue( + Temporal.PlainYearMonth.compare(new Temporal.PlainYearMonth(2000, 5, cal1, 30), new Temporal.PlainYearMonth(2000, 5, cal2, 14)), + 1, + "reference day >" +); +assert.sameValue( + Temporal.PlainYearMonth.compare(new Temporal.PlainYearMonth(1981, 4, cal1, 1), new Temporal.PlainYearMonth(1981, 4, cal2, 12)), + -1, + "reference day <" +); +assert.sameValue( + Temporal.PlainYearMonth.compare(new Temporal.PlainYearMonth(2000, 5, cal1), new Temporal.PlainYearMonth(2000, 5, cal2)), + 0, + "=" +); diff --git a/test/built-ins/Temporal/ZonedDateTime/compare/exhaustive.js b/test/built-ins/Temporal/ZonedDateTime/compare/exhaustive.js new file mode 100644 index 0000000000..655868266c --- /dev/null +++ b/test/built-ins/Temporal/ZonedDateTime/compare/exhaustive.js @@ -0,0 +1,29 @@ +// Copyright (C) 2023 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.zoneddatetime.compare +description: Tests for compare() with each possible outcome +features: [Temporal] +---*/ + +const tz1 = "UTC"; +const tz2 = "-00:30"; +const cal1 = "iso8601"; +const cal2 = new (class extends Temporal.Calendar { id = "custom"; })("iso8601"); + +assert.sameValue( + Temporal.ZonedDateTime.compare(new Temporal.ZonedDateTime(1_000_000_000_000_000_000n, tz1, cal1), new Temporal.ZonedDateTime(500_000_000_000_000_000n, tz2, cal2)), + 1, + ">" +); +assert.sameValue( + Temporal.ZonedDateTime.compare(new Temporal.ZonedDateTime(-1000n, tz1, cal1), new Temporal.ZonedDateTime(1000n, tz2, cal2)), + -1, + "<" +); +assert.sameValue( + Temporal.ZonedDateTime.compare(new Temporal.ZonedDateTime(123_456_789n, tz1, cal1), new Temporal.ZonedDateTime(123_456_789n, tz2, cal2)), + 0, + "=" +);