From e48df0b96457b67b2d81fab16cabb230152a6c57 Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Thu, 28 Jul 2022 13:12:16 -0700 Subject: [PATCH] Temporal: Adjust tests for non-integer/out-of-range values of fractionalSecondDigits This implements the normative change in https://github.com/tc39/proposal-temporal/pull/2297 which reached consensus at the July 2022 TC39 meeting. Values given as the fractionalSecondDigits option are now truncated to integers before they are compared to the allowable range. --- .../toString/fractionalseconddigits-non-integer.js | 10 ++++++++-- .../toString/fractionalseconddigits-non-integer.js | 10 ++++++++-- .../toString/fractionalseconddigits-non-integer.js | 10 ++++++++-- .../toString/fractionalseconddigits-non-integer.js | 10 ++++++++-- .../toString/fractionalseconddigits-non-integer.js | 10 ++++++++-- 5 files changed, 40 insertions(+), 10 deletions(-) diff --git a/test/built-ins/Temporal/Duration/prototype/toString/fractionalseconddigits-non-integer.js b/test/built-ins/Temporal/Duration/prototype/toString/fractionalseconddigits-non-integer.js index 86d15aa2e8..4be3a8b6b7 100644 --- a/test/built-ins/Temporal/Duration/prototype/toString/fractionalseconddigits-non-integer.js +++ b/test/built-ins/Temporal/Duration/prototype/toString/fractionalseconddigits-non-integer.js @@ -16,5 +16,11 @@ features: [Temporal] const duration = new Temporal.Duration(1, 2, 3, 4, 5, 6, 7, 987, 650, 0); -const string = duration.toString({ fractionalSecondDigits: 2.5 }); -assert.sameValue(string, "P1Y2M3W4DT5H6M7.98S", "fractionalSecondDigits 2.5 floors to 2"); +let string = duration.toString({ fractionalSecondDigits: 2.5 }); +assert.sameValue(string, "P1Y2M3W4DT5H6M7.98S", "fractionalSecondDigits 2.5 truncates to 2"); + +string = duration.toString({ fractionalSecondDigits: 9.7 }); +assert.sameValue(string, "P1Y2M3W4DT5H6M7.987650000S", "fractionalSecondDigits 9.7 truncates to 9 and is not out of range"); + +string = duration.toString({ fractionalSecondDigits: -0.6 }); +assert.sameValue(string, "P1Y2M3W4DT5H6M7S", "fractionalSecondDigits -0.6 truncates to 0 and is not out of range"); diff --git a/test/built-ins/Temporal/Instant/prototype/toString/fractionalseconddigits-non-integer.js b/test/built-ins/Temporal/Instant/prototype/toString/fractionalseconddigits-non-integer.js index 1a3479b5cc..ef91211f35 100644 --- a/test/built-ins/Temporal/Instant/prototype/toString/fractionalseconddigits-non-integer.js +++ b/test/built-ins/Temporal/Instant/prototype/toString/fractionalseconddigits-non-integer.js @@ -16,5 +16,11 @@ features: [Temporal] const instant = new Temporal.Instant(1_000_000_000_987_650_000n); -const string = instant.toString({ fractionalSecondDigits: 2.5 }); -assert.sameValue(string, "2001-09-09T01:46:40.98Z", "fractionalSecondDigits 2.5 floors to 2"); +let string = instant.toString({ fractionalSecondDigits: 2.5 }); +assert.sameValue(string, "2001-09-09T01:46:40.98Z", "fractionalSecondDigits 2.5 truncates to 2"); + +string = instant.toString({ fractionalSecondDigits: 9.7 }); +assert.sameValue(string, "2001-09-09T01:46:40.987650000Z", "fractionalSecondDigits 9.7 truncates to 9 and is not out of range"); + +string = instant.toString({ fractionalSecondDigits: -0.6 }); +assert.sameValue(string, "2001-09-09T01:46:40Z", "fractionalSecondDigits -0.6 truncates to 0 and is not out of range"); diff --git a/test/built-ins/Temporal/PlainDateTime/prototype/toString/fractionalseconddigits-non-integer.js b/test/built-ins/Temporal/PlainDateTime/prototype/toString/fractionalseconddigits-non-integer.js index 281d78f1ab..b3200474e7 100644 --- a/test/built-ins/Temporal/PlainDateTime/prototype/toString/fractionalseconddigits-non-integer.js +++ b/test/built-ins/Temporal/PlainDateTime/prototype/toString/fractionalseconddigits-non-integer.js @@ -16,5 +16,11 @@ features: [Temporal] const datetime = new Temporal.PlainDateTime(2000, 5, 2, 12, 34, 56, 987, 650, 0); -const string = datetime.toString({ fractionalSecondDigits: 2.5 }); -assert.sameValue(string, "2000-05-02T12:34:56.98", "fractionalSecondDigits 2.5 floors to 2"); +let string = datetime.toString({ fractionalSecondDigits: 2.5 }); +assert.sameValue(string, "2000-05-02T12:34:56.98", "fractionalSecondDigits 2.5 truncates to 2"); + +string = datetime.toString({ fractionalSecondDigits: 9.7 }); +assert.sameValue(string, "2000-05-02T12:34:56.987650000", "fractionalSecondDigits 9.7 truncates to 9 and is not out of range"); + +string = datetime.toString({ fractionalSecondDigits: -0.6 }); +assert.sameValue(string, "2000-05-02T12:34:56", "fractionalSecondDigits -0.6 truncates to 0 and is not out of range"); diff --git a/test/built-ins/Temporal/PlainTime/prototype/toString/fractionalseconddigits-non-integer.js b/test/built-ins/Temporal/PlainTime/prototype/toString/fractionalseconddigits-non-integer.js index 3ca8fed5aa..5bbbf63f48 100644 --- a/test/built-ins/Temporal/PlainTime/prototype/toString/fractionalseconddigits-non-integer.js +++ b/test/built-ins/Temporal/PlainTime/prototype/toString/fractionalseconddigits-non-integer.js @@ -16,5 +16,11 @@ features: [Temporal] const time = new Temporal.PlainTime(12, 34, 56, 987, 650, 0); -const string = time.toString({ fractionalSecondDigits: 2.5 }); -assert.sameValue(string, "12:34:56.98", "fractionalSecondDigits 2.5 floors to 2"); +let string = time.toString({ fractionalSecondDigits: 2.5 }); +assert.sameValue(string, "12:34:56.98", "fractionalSecondDigits 2.5 truncates to 2"); + +string = time.toString({ fractionalSecondDigits: 9.7 }); +assert.sameValue(string, "12:34:56.987650000", "fractionalSecondDigits 9.7 truncates to 9 and is not out of range"); + +string = time.toString({ fractionalSecondDigits: -0.6 }); +assert.sameValue(string, "12:34:56", "fractionalSecondDigits -0.6 truncates to 0 and is not out of range"); diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/toString/fractionalseconddigits-non-integer.js b/test/built-ins/Temporal/ZonedDateTime/prototype/toString/fractionalseconddigits-non-integer.js index a9ccce61d8..feb7c6e2df 100644 --- a/test/built-ins/Temporal/ZonedDateTime/prototype/toString/fractionalseconddigits-non-integer.js +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/toString/fractionalseconddigits-non-integer.js @@ -16,5 +16,11 @@ features: [Temporal] const datetime = new Temporal.ZonedDateTime(1_000_000_000_987_650_000n, "UTC"); -const string = datetime.toString({ fractionalSecondDigits: 2.5 }); -assert.sameValue(string, "2001-09-09T01:46:40.98+00:00[UTC]", "fractionalSecondDigits 2.5 floors to 2"); +let string = datetime.toString({ fractionalSecondDigits: 2.5 }); +assert.sameValue(string, "2001-09-09T01:46:40.98+00:00[UTC]", "fractionalSecondDigits 2.5 truncates to 2"); + +string = datetime.toString({ fractionalSecondDigits: 9.7 }); +assert.sameValue(string, "2001-09-09T01:46:40.987650000+00:00[UTC]", "fractionalSecondDigits 9.7 truncates to 9 and is not out of range"); + +string = datetime.toString({ fractionalSecondDigits: -0.6 }); +assert.sameValue(string, "2001-09-09T01:46:40+00:00[UTC]", "fractionalSecondDigits -0.6 truncates to 0 and is not out of range");