blob: 934edbfdf6b78989cc3bbe8d82cf0bd8d90d1fa4 [file] [log] [blame]
// 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.timezone.prototype.getnexttransition
description: >
RangeError thrown if an invalid ISO string (or syntactically valid ISO string
that is not supported) is used as an Instant
features: [Temporal, arrow-function]
---*/
const invalidStrings = [
// invalid ISO strings:
"",
"invalid iso8601",
"2020-01-00T00:00Z",
"2020-01-32T00:00Z",
"2020-02-30T00:00Z",
"2021-02-29T00:00Z",
"2020-00-01T00:00Z",
"2020-13-01T00:00Z",
"2020-01-01TZ",
"2020-01-01T25:00:00Z",
"2020-01-01T01:60:00Z",
"2020-01-01T01:60:61Z",
"2020-01-01T00:00Zjunk",
"2020-01-01T00:00:00Zjunk",
"2020-01-01T00:00:00.000000000Zjunk",
"2020-01-01T00:00:00+00:00junk",
"2020-01-01T00:00:00+00:00[UTC]junk",
"2020-01-01T00:00:00+00:00[UTC][u-ca=iso8601]junk",
"02020-01-01T00:00Z",
"2020-001-01T00:00Z",
"2020-01-001T00:00Z",
"2020-01-01T001Z",
"2020-01-01T01:001Z",
"2020-01-01T01:01:001Z",
// valid, but forms not supported in Temporal:
"2020-W01-1T00:00Z",
"2020-001T00:00Z",
"+0002020-01-01T00:00Z",
// may be valid in other contexts, but insufficient information for Instant:
"2020-01",
"+002020-01",
"01-01",
"2020-W01",
"P1Y",
"-P12Y",
"2020-01-01",
"2020-01-01T00",
"2020-01-01T00:00",
"2020-01-01T00:00:00",
"2020-01-01T00:00:00.000000000",
// valid, but outside the supported range:
"-999999-01-01T00:00Z",
"+999999-01-01T00:00Z",
];
const instance = new Temporal.TimeZone("UTC");
for (const arg of invalidStrings) {
assert.throws(
RangeError,
() => instance.getNextTransition(arg),
`"${arg}" should not be a valid ISO string for an Instant`
);
}