Invalid flags in a RegExp literal should be an early SyntaxError
[WebKit-https.git] / JSTests / stress / date-parse-ranges.js
1 // This test checks that dates follow the range described in ecma262/#sec-date-time-string-format
2
3 function shouldBe(actual, expected)
4 {
5     if (actual !== expected)
6         throw new Error(`bad value: ${actual}`);
7 }
8
9 function shouldBeNaN(actual)
10 {
11     if (!Number.isNaN(actual))
12         throw new Error(`bad value: ${actual}`);
13 }
14
15 {
16     let dateValue = Date.parse("275760-09-13T00:00:00.000Z");
17     shouldBe(dateValue, 8640000000000000);
18
19     let date = new Date(dateValue);
20     shouldBe(date.getUTCFullYear(), 275760);
21     shouldBe(date.getUTCMonth(), 8);
22     shouldBe(date.getUTCDate(), 13);
23     shouldBe(date.getUTCHours(), 0);
24     shouldBe(date.getUTCMinutes(), 0);
25     shouldBe(date.getUTCSeconds(), 0);
26     shouldBe(date.getUTCMilliseconds(), 0);
27 }
28
29 {
30     let dateValue = Date.UTC(275760, 8, 13, 0, 0, 0, 0);
31     shouldBe(dateValue, 8640000000000000);
32
33     let date = new Date(dateValue);
34     shouldBe(date.getUTCFullYear(), 275760);
35     shouldBe(date.getUTCMonth(), 8);
36     shouldBe(date.getUTCDate(), 13);
37     shouldBe(date.getUTCHours(), 0);
38     shouldBe(date.getUTCMinutes(), 0);
39     shouldBe(date.getUTCSeconds(), 0);
40     shouldBe(date.getUTCMilliseconds(), 0);
41 }
42
43 {
44     let dateValue = Date.parse("275760-09-12T23:59:59.999Z");
45     shouldBe(dateValue, 8639999999999999);
46
47     let date = new Date(dateValue);
48     shouldBe(date.getUTCFullYear(), 275760);
49     shouldBe(date.getUTCMonth(), 8);
50     shouldBe(date.getUTCDate(), 12);
51     shouldBe(date.getUTCHours(), 23);
52     shouldBe(date.getUTCMinutes(), 59);
53     shouldBe(date.getUTCSeconds(), 59);
54     shouldBe(date.getUTCMilliseconds(), 999);
55 }
56
57 {
58     let dateValue = Date.UTC(275760, 8, 12, 23, 59, 59, 999);
59     shouldBe(dateValue, 8639999999999999);
60
61     let date = new Date(dateValue);
62     shouldBe(date.getUTCFullYear(), 275760);
63     shouldBe(date.getUTCMonth(), 8);
64     shouldBe(date.getUTCDate(), 12);
65     shouldBe(date.getUTCHours(), 23);
66     shouldBe(date.getUTCMinutes(), 59);
67     shouldBe(date.getUTCSeconds(), 59);
68     shouldBe(date.getUTCMilliseconds(), 999);
69 }
70
71 {
72     let dateValue = Date.parse("275760-09-13T00:00:00.001Z");
73     shouldBeNaN(dateValue);
74 }
75
76 {
77     let dateValue = Date.UTC(275760, 8, 13, 0, 0, 0, 1);
78     shouldBeNaN(dateValue);
79 }
80
81 {
82     let dateValue = Date.parse("-271821-04-20T00:00:00.000Z");
83     shouldBe(dateValue, -8640000000000000);
84
85     let date = new Date(dateValue);
86     shouldBe(date.getUTCFullYear(), -271821);
87     shouldBe(date.getUTCMonth(), 3);
88     shouldBe(date.getUTCDate(), 20);
89     shouldBe(date.getUTCHours(), 0);
90     shouldBe(date.getUTCMinutes(), 0);
91     shouldBe(date.getUTCSeconds(), 0);
92     shouldBe(date.getUTCMilliseconds(), 0);
93 }
94
95 {
96     let dateValue = Date.UTC(-271821, 3, 20, 0, 0, 0, 0);
97     shouldBe(dateValue, -8640000000000000);
98
99     let date = new Date(dateValue);
100     shouldBe(date.getUTCFullYear(), -271821);
101     shouldBe(date.getUTCMonth(), 3);
102     shouldBe(date.getUTCDate(), 20);
103     shouldBe(date.getUTCHours(), 0);
104     shouldBe(date.getUTCMinutes(), 0);
105     shouldBe(date.getUTCSeconds(), 0);
106     shouldBe(date.getUTCMilliseconds(), 0);
107 }
108
109 {
110     let dateValue = Date.parse("-271821-04-20T00:00:00.001Z");
111     shouldBe(dateValue, -8639999999999999);
112
113     let date = new Date(dateValue);
114     shouldBe(date.getUTCFullYear(), -271821);
115     shouldBe(date.getUTCMonth(), 3);
116     shouldBe(date.getUTCDate(), 20);
117     shouldBe(date.getUTCHours(), 0);
118     shouldBe(date.getUTCMinutes(), 0);
119     shouldBe(date.getUTCSeconds(), 0);
120     shouldBe(date.getUTCMilliseconds(), 1);
121 }
122
123 {
124     let dateValue = Date.UTC(-271821, 3, 20, 0, 0, 0, 1);
125     shouldBe(dateValue, -8639999999999999);
126
127     let date = new Date(dateValue);
128     shouldBe(date.getUTCFullYear(), -271821);
129     shouldBe(date.getUTCMonth(), 3);
130     shouldBe(date.getUTCDate(), 20);
131     shouldBe(date.getUTCHours(), 0);
132     shouldBe(date.getUTCMinutes(), 0);
133     shouldBe(date.getUTCSeconds(), 0);
134     shouldBe(date.getUTCMilliseconds(), 1);
135 }
136
137 {
138     let dateValue = Date.parse("-271821-04-19T23:59:59.999Z");
139     shouldBeNaN(dateValue);
140 }
141
142 {
143     let dateValue = Date.UTC(-271821, 3, 19, 23, 59, 59, 999);
144     shouldBeNaN(dateValue);
145 }