From 51ce1fa00f55d28372c2592a03a2a32294c7c37e Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Wed, 9 Mar 2022 16:23:08 +0100 Subject: [PATCH] Expand some Duration#toString() tests. --- .../Duration/prototype/toString/balance.js | 24 ++++++++++++++ .../fractionalseconddigits-invalid-string.js | 4 ++- .../fractionalseconddigits-out-of-range.js | 2 ++ .../prototype/toString/negative-components.js | 33 +++++++++++++++++-- .../toString/roundingmode-invalid-string.js | 4 ++- .../toString/smallestunit-invalid-string.js | 5 ++- 6 files changed, 66 insertions(+), 6 deletions(-) create mode 100644 test/built-ins/Temporal/Duration/prototype/toString/balance.js diff --git a/test/built-ins/Temporal/Duration/prototype/toString/balance.js b/test/built-ins/Temporal/Duration/prototype/toString/balance.js new file mode 100644 index 00000000000..f66832a0c95 --- /dev/null +++ b/test/built-ins/Temporal/Duration/prototype/toString/balance.js @@ -0,0 +1,24 @@ +// Copyright (C) 2022 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.duration.prototype.tostring +description: Verify that values are balanced correctly. +features: [Temporal] +---*/ + +assert.sameValue( + Temporal.Duration.from({ milliseconds: 3500 }).toString(), + "PT3.5S"); +assert.sameValue( + Temporal.Duration.from({ microseconds: 3500 }).toString(), + "PT0.0035S"); +assert.sameValue( + Temporal.Duration.from({ nanoseconds: 3500 }).toString(), + "PT0.0000035S"); +assert.sameValue( + new Temporal.Duration(0, 0, 0, 0, 0, 0, 0, 1111, 1111, 1111).toString(), + "PT1.112112111S"); +assert.sameValue( + Temporal.Duration.from({ seconds: 120, milliseconds: 3500 }).toString(), + "PT123.5S"); diff --git a/test/built-ins/Temporal/Duration/prototype/toString/fractionalseconddigits-invalid-string.js b/test/built-ins/Temporal/Duration/prototype/toString/fractionalseconddigits-invalid-string.js index 1cb51f820eb..036b977ad16 100644 --- a/test/built-ins/Temporal/Duration/prototype/toString/fractionalseconddigits-invalid-string.js +++ b/test/built-ins/Temporal/Duration/prototype/toString/fractionalseconddigits-invalid-string.js @@ -16,4 +16,6 @@ features: [Temporal] const duration = new Temporal.Duration(1, 2, 3, 4, 5, 6, 7, 987, 650, 0); -assert.throws(RangeError, () => duration.toString({ fractionalSecondDigits: "other string" })); +for (const fractionalSecondDigits of ["other string", "AUTO", "not-auto", "autos"]) { + assert.throws(RangeError, () => duration.toString({ fractionalSecondDigits })); +} diff --git a/test/built-ins/Temporal/Duration/prototype/toString/fractionalseconddigits-out-of-range.js b/test/built-ins/Temporal/Duration/prototype/toString/fractionalseconddigits-out-of-range.js index d9f4837d3cb..9a20541c19f 100644 --- a/test/built-ins/Temporal/Duration/prototype/toString/fractionalseconddigits-out-of-range.js +++ b/test/built-ins/Temporal/Duration/prototype/toString/fractionalseconddigits-out-of-range.js @@ -16,5 +16,7 @@ features: [Temporal] const duration = new Temporal.Duration(1, 2, 3, 4, 5, 6, 7, 987, 650, 0); +assert.throws(RangeError, () => duration.toString({ fractionalSecondDigits: -Infinity })); assert.throws(RangeError, () => duration.toString({ fractionalSecondDigits: -1 })); assert.throws(RangeError, () => duration.toString({ fractionalSecondDigits: 10 })); +assert.throws(RangeError, () => duration.toString({ fractionalSecondDigits: Infinity })); diff --git a/test/built-ins/Temporal/Duration/prototype/toString/negative-components.js b/test/built-ins/Temporal/Duration/prototype/toString/negative-components.js index 7bfc8232a52..2022f4bd4f4 100644 --- a/test/built-ins/Temporal/Duration/prototype/toString/negative-components.js +++ b/test/built-ins/Temporal/Duration/prototype/toString/negative-components.js @@ -6,6 +6,33 @@ esid: sec-temporal.duration.prototype.tostring description: Temporal.Duration.toString handles negative components features: [Temporal] ---*/ -const d = new Temporal.Duration(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1); -const expected = "-P1Y1M1W1DT1H1M1.001001001S"; -assert.sameValue(d.toString(), expected, "toString with negative components"); +assert.sameValue( + new Temporal.Duration(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1).toString(), + "-P1Y1M1W1DT1H1M1.001001001S"); +assert.sameValue( + Temporal.Duration.from({ milliseconds: -250 }).toString(), + "-PT0.25S"); +assert.sameValue( + Temporal.Duration.from({ milliseconds: -3500 }).toString(), + "-PT3.5S"); +assert.sameValue( + Temporal.Duration.from({ microseconds: -250 }).toString(), + "-PT0.00025S"); +assert.sameValue( + Temporal.Duration.from({ microseconds: -3500 }).toString(), + "-PT0.0035S"); +assert.sameValue( + Temporal.Duration.from({ nanoseconds: -250 }).toString(), + "-PT0.00000025S"); +assert.sameValue( + Temporal.Duration.from({ nanoseconds: -3500 }).toString(), + "-PT0.0000035S"); +assert.sameValue( + new Temporal.Duration(0, 0, 0, 0, 0, 0, 0, -1111, -1111, -1111).toString(), + "-PT1.112112111S"); +assert.sameValue( + Temporal.Duration.from({ seconds: -120, milliseconds: -3500 }).toString(), + "-PT123.5S"); +assert.sameValue( + Temporal.Duration.from({ weeks: -1, days: -1 }).toString(), + "-P1W1D"); diff --git a/test/built-ins/Temporal/Duration/prototype/toString/roundingmode-invalid-string.js b/test/built-ins/Temporal/Duration/prototype/toString/roundingmode-invalid-string.js index 983b9a25b67..efc9ba2b712 100644 --- a/test/built-ins/Temporal/Duration/prototype/toString/roundingmode-invalid-string.js +++ b/test/built-ins/Temporal/Duration/prototype/toString/roundingmode-invalid-string.js @@ -8,4 +8,6 @@ features: [Temporal] ---*/ const duration = new Temporal.Duration(0, 0, 0, 0, 12, 34, 56, 123, 987, 500); -assert.throws(RangeError, () => duration.toString({ smallestUnit: "microsecond", roundingMode: "other string" })); +for (const roundingMode of ["other string", "cile", "CEIL", "ce\u0131l", "auto"]) { + assert.throws(RangeError, () => duration.toString({ smallestUnit: "microsecond", roundingMode })); +} diff --git a/test/built-ins/Temporal/Duration/prototype/toString/smallestunit-invalid-string.js b/test/built-ins/Temporal/Duration/prototype/toString/smallestunit-invalid-string.js index b41620c1f4d..046b4a99f70 100644 --- a/test/built-ins/Temporal/Duration/prototype/toString/smallestunit-invalid-string.js +++ b/test/built-ins/Temporal/Duration/prototype/toString/smallestunit-invalid-string.js @@ -8,4 +8,7 @@ features: [Temporal] ---*/ const duration = new Temporal.Duration(0, 0, 0, 0, 12, 34, 56, 123, 987, 500); -assert.throws(RangeError, () => duration.toString({ smallestUnit: "other string" })); +const values = ["eras", "years", "months", "weeks", "days", "hours", "minutes", "nonsense", "other string", "mill\u0131seconds", "SECONDS"]; +for (const smallestUnit of values) { + assert.throws(RangeError, () => duration.toString({ smallestUnit })); +}