1425bb815Sopenharmony_ci// Copyright JS Foundation and other contributors, http://js.foundation
2425bb815Sopenharmony_ci//
3425bb815Sopenharmony_ci// Licensed under the Apache License, Version 2.0 (the "License");
4425bb815Sopenharmony_ci// you may not use this file except in compliance with the License.
5425bb815Sopenharmony_ci// You may obtain a copy of the License at
6425bb815Sopenharmony_ci//
7425bb815Sopenharmony_ci//     http://www.apache.org/licenses/LICENSE-2.0
8425bb815Sopenharmony_ci//
9425bb815Sopenharmony_ci// Unless required by applicable law or agreed to in writing, software
10425bb815Sopenharmony_ci// distributed under the License is distributed on an "AS IS" BASIS
11425bb815Sopenharmony_ci// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12425bb815Sopenharmony_ci// See the License for the specific language governing permissions and
13425bb815Sopenharmony_ci// limitations under the License.
14425bb815Sopenharmony_ci
15425bb815Sopenharmony_civar wrongFormats = ["",
16425bb815Sopenharmony_ci                    "2",
17425bb815Sopenharmony_ci                    "20",
18425bb815Sopenharmony_ci                    "201",
19425bb815Sopenharmony_ci                    "2015-",
20425bb815Sopenharmony_ci                    "2015-01-",
21425bb815Sopenharmony_ci                    "2015-01-01-",
22425bb815Sopenharmony_ci                    "qwerty",
23425bb815Sopenharmony_ci                    "2015-01-01T",
24425bb815Sopenharmony_ci                    "2015-01-01T1:1",
25425bb815Sopenharmony_ci                    "2015-01-01T01",
26425bb815Sopenharmony_ci                    "2015-01-01T01",
27425bb815Sopenharmony_ci                    "2015-01-01T01:01F",
28425bb815Sopenharmony_ci                    "T2015",
29425bb815Sopenharmony_ci                    "2015-01-01Z",
30425bb815Sopenharmony_ci                    "2015-01-01+01:00",
31425bb815Sopenharmony_ci                    "2015-01-01T00:00+01",
32425bb815Sopenharmony_ci                    "2015-01-01T00:00+1",
33425bb815Sopenharmony_ci                    "2015-01-01T00:00-01",
34425bb815Sopenharmony_ci                    "2015-01-01T00:00.000",
35425bb815Sopenharmony_ci                    "2015-01-01T00:00:",
36425bb815Sopenharmony_ci                    "2015-01-01T00:",
37425bb815Sopenharmony_ci                    "2015-01-01T00:00:00.1",
38425bb815Sopenharmony_ci                    "2015-01-01T00:00:00.01",
39425bb815Sopenharmony_ci                    "2015-01-01T24:01:00.000",
40425bb815Sopenharmony_ci                    "2015-01-01T24:00:01.000",
41425bb815Sopenharmony_ci                    "2015-01-01T24:00:00.001",
42425bb815Sopenharmony_ci                    "2015-01-01T00:00+01:00Z",
43425bb815Sopenharmony_ci                    "2015/01/01",
44425bb815Sopenharmony_ci                    "2015-01-32",
45425bb815Sopenharmony_ci                    "2015--1",
46425bb815Sopenharmony_ci                    "2015-13",
47425bb815Sopenharmony_ci                    "2015-01--1",
48425bb815Sopenharmony_ci                    "-215",
49425bb815Sopenharmony_ci                    "-215-01-01",
50425bb815Sopenharmony_ci                    "2015-01-00",
51425bb815Sopenharmony_ci                    "2015-01-01T25:00",
52425bb815Sopenharmony_ci                    "2015-01-01T00:60",
53425bb815Sopenharmony_ci                    "2015-01-01T-1:00",
54425bb815Sopenharmony_ci                    "2015-01-01T00:-1",
55425bb815Sopenharmony_ci                    "2e+3",
56425bb815Sopenharmony_ci                    "+2015-01-01",
57425bb815Sopenharmony_ci                    "-2015-01-01",
58425bb815Sopenharmony_ci                    "+02015-01-01",
59425bb815Sopenharmony_ci                    "-02015-01-01",
60425bb815Sopenharmony_ci                    "002015-01-01",
61425bb815Sopenharmony_ci                    "+0002015-01-01",
62425bb815Sopenharmony_ci                    "-0002015-01-01",
63425bb815Sopenharmony_ci                    "2015-01T00:00:00.000-03X00",
64425bb815Sopenharmony_ci                    "2015-01-01T00-03:00",
65425bb815Sopenharmony_ci                    "Fri Jan 01 1 00:00:00 GMT+0000",
66425bb815Sopenharmony_ci                    "Fri Jan 01 11 00:00:00 GMT+0000",
67425bb815Sopenharmony_ci                    "Fri Jan 01 111 00:00:00 GMT+0000",
68425bb815Sopenharmony_ci                    "Fri Jan 01 1234567 00:00:00 GMT+0000",
69425bb815Sopenharmony_ci                    "Fri Jan 01 +1000 00:00:00 GMT+0000",
70425bb815Sopenharmony_ci                    "Fri Jan 01 -1 00:00:00 GMT+0000",
71425bb815Sopenharmony_ci                    "Fri Jan 01 -11 00:00:00 GMT+0000",
72425bb815Sopenharmony_ci                    "Fri Jan 01 -111 00:00:00 GMT+0000",
73425bb815Sopenharmony_ci                    "Fri Jan 01 -1234567 00:00:00 GMT+0000",
74425bb815Sopenharmony_ci                    "Thu Apr 10 1997"];
75425bb815Sopenharmony_ci
76425bb815Sopenharmony_cifor (i in wrongFormats) {
77425bb815Sopenharmony_ci  var d = Date.parse(wrongFormats[i]);
78425bb815Sopenharmony_ci  assert (isNaN(d));
79425bb815Sopenharmony_ci}
80425bb815Sopenharmony_ci
81425bb815Sopenharmony_civar d;
82425bb815Sopenharmony_ci
83425bb815Sopenharmony_cid = Date.parse(undefined);
84425bb815Sopenharmony_ciassert (isNaN(d));
85425bb815Sopenharmony_ci
86425bb815Sopenharmony_cid = Date.parse({});
87425bb815Sopenharmony_ciassert (isNaN(d));
88425bb815Sopenharmony_ci
89425bb815Sopenharmony_cid = Date.parse(2000 + 15);
90425bb815Sopenharmony_ciassert (d == 1420070400000);
91425bb815Sopenharmony_ci
92425bb815Sopenharmony_cid = Date.parse("2015");
93425bb815Sopenharmony_ciassert (d == 1420070400000);
94425bb815Sopenharmony_ci
95425bb815Sopenharmony_cid = Date.parse("2015-01");
96425bb815Sopenharmony_ciassert (d == 1420070400000);
97425bb815Sopenharmony_ci
98425bb815Sopenharmony_cid = Date.parse("2015-01-01");
99425bb815Sopenharmony_ciassert (d == 1420070400000);
100425bb815Sopenharmony_ci
101425bb815Sopenharmony_cid = Date.parse("2015-01T00:00");
102425bb815Sopenharmony_ciassert (d == 1420070400000);
103425bb815Sopenharmony_ci
104425bb815Sopenharmony_cid = Date.parse("2015-01T00:00:00");
105425bb815Sopenharmony_ciassert (d == 1420070400000);
106425bb815Sopenharmony_ci
107425bb815Sopenharmony_cid = Date.parse("2015-01T00:00:00.000");
108425bb815Sopenharmony_ciassert (d == 1420070400000);
109425bb815Sopenharmony_ci
110425bb815Sopenharmony_cid = Date.parse("2015-01T24:00:00.000");
111425bb815Sopenharmony_ciassert (d == 1420156800000);
112425bb815Sopenharmony_ci
113425bb815Sopenharmony_cid = Date.parse("2015-01T00:00:00.000+03:00");
114425bb815Sopenharmony_ciassert (d == 1420059600000);
115425bb815Sopenharmony_ci
116425bb815Sopenharmony_cid = Date.parse("2015-01T00:00:00.000-03:00");
117425bb815Sopenharmony_ciassert (d == 1420081200000);
118425bb815Sopenharmony_ci
119425bb815Sopenharmony_cid = Date.parse("2015-07-03T14:35:43.123+01:30");
120425bb815Sopenharmony_ciassert (d == 1435928743123);
121425bb815Sopenharmony_ci
122425bb815Sopenharmony_ciassert (Date.parse("-271821-04-20T00:00:00.000Z") == -8640000000000000)
123425bb815Sopenharmony_ciassert (Date.parse("-000001-12-31T23:59:59.999Z") == -62167219200001)
124425bb815Sopenharmony_ciassert (Date.parse("0000-01-01T00:00:00.000Z") == -62167219200000)
125425bb815Sopenharmony_ciassert (Date.parse("0009-12-31T23:59:59.999Z") == -61851600000001)
126425bb815Sopenharmony_ciassert (Date.parse("0010-01-01T00:00:00.000Z") == -61851600000000)
127425bb815Sopenharmony_ciassert (Date.parse("0099-12-31T23:59:59.999Z") == -59011459200001)
128425bb815Sopenharmony_ciassert (Date.parse("0100-01-01T00:00:00.000Z") == -59011459200000)
129425bb815Sopenharmony_ciassert (Date.parse("0999-12-31T23:59:59.999Z") == -30610224000001)
130425bb815Sopenharmony_ciassert (Date.parse("1000-01-01T00:00:00.000Z") == -30610224000000)
131425bb815Sopenharmony_ciassert (Date.parse("1969-12-31T23:59:59.999Z") == -1)
132425bb815Sopenharmony_ciassert (Date.parse("1970-01-01T00:00:00.000Z") == 0)
133425bb815Sopenharmony_ciassert (Date.parse("1970-01-01T00:00:00.001Z") == 1)
134425bb815Sopenharmony_ciassert (Date.parse("9999-12-31T23:59:59.999Z") == 253402300799999)
135425bb815Sopenharmony_ciassert (Date.parse("+010000-01-01T00:00:00.000Z") == 253402300800000)
136425bb815Sopenharmony_ciassert (Date.parse("+275760-09-13T00:00:00.000Z") == 8640000000000000)
137425bb815Sopenharmony_ciassert (Date.parse("+275760-09-13T00:00:00.001Z") == 8640000000000001)
138425bb815Sopenharmony_ci
139425bb815Sopenharmony_ci// Date.toString() format
140425bb815Sopenharmony_ciassert (Date.parse("Tue Apr 20 -271821 00:00:00 GMT+0000") == -8640000000000000)
141425bb815Sopenharmony_ciassert (Date.parse("Fri Dec 31 -0001 23:59:59 GMT+0000") == -62167219201000)
142425bb815Sopenharmony_ciassert (Date.parse("Sat Jan 01 0000 00:00:00 GMT+0000") == -62167219200000)
143425bb815Sopenharmony_ciassert (Date.parse("Thu Dec 31 0009 23:59:59 GMT+0000") == -61851600001000)
144425bb815Sopenharmony_ciassert (Date.parse("Fri Jan 01 0010 00:00:00 GMT+0000") == -61851600000000)
145425bb815Sopenharmony_ciassert (Date.parse("Thu Dec 31 0099 23:59:59 GMT+0000") == -59011459201000)
146425bb815Sopenharmony_ciassert (Date.parse("Fri Jan 01 0100 00:00:00 GMT+0000") == -59011459200000)
147425bb815Sopenharmony_ciassert (Date.parse("Tue Dec 31 0999 23:59:59 GMT+0000") == -30610224001000)
148425bb815Sopenharmony_ciassert (Date.parse("Wed Jan 01 1000 00:00:00 GMT+0000") == -30610224000000)
149425bb815Sopenharmony_ciassert (Date.parse("Wed Dec 31 1969 23:59:59 GMT+0000") == -1000)
150425bb815Sopenharmony_ciassert (Date.parse("Thu Jan 01 1970 00:00:00 GMT+0000") == 0)
151425bb815Sopenharmony_ciassert (Date.parse("Thu Jan 01 1970 00:00:01 GMT+0000") == 1000)
152425bb815Sopenharmony_ciassert (Date.parse("Fri Dec 31 9999 23:59:59 GMT+0000") == 253402300799000)
153425bb815Sopenharmony_ciassert (Date.parse("Sat Jan 01 10000 00:00:00 GMT+0000") == 253402300800000)
154425bb815Sopenharmony_ciassert (Date.parse("Sat Sep 13 275760 00:00:00 GMT+0000") == 8640000000000000)
155425bb815Sopenharmony_ci
156425bb815Sopenharmony_ci// Date.toUTCString() format
157425bb815Sopenharmony_ciassert (Date.parse("Tue, 20 Apr -271821 00:00:00 GMT") == -8640000000000000)
158425bb815Sopenharmony_ciassert (Date.parse("Fri, 31 Dec -0001 23:59:59 GMT") == -62167219201000)
159425bb815Sopenharmony_ciassert (Date.parse("Sat, 01 Jan 0000 00:00:00 GMT") == -62167219200000)
160425bb815Sopenharmony_ciassert (Date.parse("Thu, 31 Dec 0009 23:59:59 GMT") == -61851600001000)
161425bb815Sopenharmony_ciassert (Date.parse("Fri, 01 Jan 0010 00:00:00 GMT") == -61851600000000)
162425bb815Sopenharmony_ciassert (Date.parse("Thu, 31 Dec 0099 23:59:59 GMT") == -59011459201000)
163425bb815Sopenharmony_ciassert (Date.parse("Fri, 01 Jan 0100 00:00:00 GMT") == -59011459200000)
164425bb815Sopenharmony_ciassert (Date.parse("Tue, 31 Dec 0999 23:59:59 GMT") == -30610224001000)
165425bb815Sopenharmony_ciassert (Date.parse("Wed, 01 Jan 1000 00:00:00 GMT") == -30610224000000)
166425bb815Sopenharmony_ciassert (Date.parse("Wed, 31 Dec 1969 23:59:59 GMT") == -1000)
167425bb815Sopenharmony_ciassert (Date.parse("Thu, 01 Jan 1970 00:00:00 GMT") == 0)
168425bb815Sopenharmony_ciassert (Date.parse("Thu, 01 Jan 1970 00:00:01 GMT") == 1000)
169425bb815Sopenharmony_ciassert (Date.parse("Fri, 31 Dec 9999 23:59:59 GMT") == 253402300799000)
170425bb815Sopenharmony_ciassert (Date.parse("Sat, 01 Jan 10000 00:00:00 GMT") == 253402300800000)
171425bb815Sopenharmony_ciassert (Date.parse("Sat, 13 Sep 275760 00:00:00 GMT") == 8640000000000000)
172