argument-string-invalid.js (1521B)
1 // |reftest| skip-if(!this.hasOwnProperty('Temporal')) -- Temporal is not enabled unconditionally 2 // Copyright (C) 2022 Igalia, S.L. All rights reserved. 3 // This code is governed by the BSD license found in the LICENSE file. 4 5 /*--- 6 esid: sec-temporal.plaindatetime.from 7 description: Reject string argument if it cannot be parsed 8 features: [Temporal] 9 ---*/ 10 11 const invalidStrings = [ 12 // invalid ISO strings: 13 "", 14 "obviously invalid", 15 "2020-01-00", 16 "2020-01-32", 17 "2020-02-30", 18 "2021-02-29", 19 "2020-00-01", 20 "2020-13-01", 21 "2020-01-01T", 22 "2020-01-01T25:00:00", 23 "2020-01-01T01:60:00", 24 "2020-01-01T01:60:61", 25 "2020-01-01junk", 26 "2020-01-01T00:00:00junk", 27 "2020-01-01T00:00:00+00:00junk", 28 "2020-01-01T00:00:00+00:00[UTC]junk", 29 "2020-01-01T00:00:00+00:00[UTC][u-ca=iso8601]junk", 30 "02020-01-01", 31 "2020-001-01", 32 "2020-01-001", 33 "2020-01-01T001", 34 "2020-01-01T01:001", 35 "2020-01-01T01:01:001", 36 // valid, but forms not supported in Temporal: 37 "2020-W01-1", 38 "2020-001", 39 "+0002020-01-01", 40 // valid, but this calendar must not exist: 41 "2020-01-01[u-ca=notexist]", 42 // may be valid in other contexts, but insufficient information for PlainDateTime: 43 "2020-01", 44 "+002020-01", 45 "01-01", 46 "2020-W01", 47 "P1Y", 48 "-P12Y", 49 // valid, but outside the supported range: 50 "-999999-01-01", 51 "+999999-01-01", 52 ]; 53 54 invalidStrings.forEach((s) => { 55 assert.throws( 56 RangeError, 57 () => Temporal.PlainDateTime.from(s), 58 `invalid date-time string (${s})` 59 ); 60 }); 61 62 reportCompare(0, 0);