Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / LayoutTests / fast / js / kde / resources / Date.js
blobda003ec38e0d607f8998fdd04f89c446b37c70e2
1 debug("Start Of Test");
3 shouldBeTrue("isNaN(Date.prototype.valueOf())");
5 var d = new Date(1017492323515); // Sat Mar 30 13:45:23 GMT+0100 (CET) 2002
6 // shouldBe("d.getUTCHours()", "12");
7 // shouldBe("d.getHours()", "12");
8 shouldBe("d.getMinutes()", "45");
9 shouldBe("d.getUTCMinutes()", "45");
10 shouldBe("d.getDay()", "6");
11 shouldBe("d.getMonth()", "2");
12 shouldBe("d.getFullYear()", "2002");
14 // string/number conversions
15 shouldBe("Number(d)", "1017492323515");
16 shouldBe("Boolean(d)", "true");
17 shouldBe("(new Date(100)).valueOf()", "100");
18 shouldBe("(new Date(true)).valueOf()", "1");
19 shouldBe("(new Date(false)).valueOf()", "0");
20 shouldBe("typeof (new Date()).toString()", "'string'");
21 shouldBe("typeof ('' + new Date())", "'string'");
22 shouldBe("typeof (new Date() + new Date())", "'string'");
23 shouldBeTrue("isNaN(Number(new Date('foo')))");
24 shouldBe("new Date(10001) - new Date(10000)", "1");
25 shouldBe("'' - new Date(10000)", "-10000");
26 shouldBe("2 * new Date(10000)", "20000");
27 shouldBe("var d = new Date(); d == String(d)", "true");
29 var d0 = new Date(2004, 0, 1, 0, 0, 0, 0);
30 shouldBe("d0.getHours()","0");
32 var d1 = new Date(Date.UTC(2004, 0, 1, 0, 0, 0, 0));
33 shouldBe("d1.getUTCHours()","0");
34 d1.setUTCHours(1999,6,9);
35 d1.setUTCHours(11,22,33);
36 shouldBe("d1.getUTCHours()","11");
38 var d2 = new Date();
39 d2.setMilliseconds(11);
40 shouldBe("d2.getMilliseconds()", "11");
41 d2.setSeconds(11, 22);
42 shouldBe("d2.getSeconds()", "11");
43 shouldBe("d2.getMilliseconds()", "22");
44 d2.setMinutes(11, 22, 33);
45 shouldBe("d2.getMinutes()", "11");
46 shouldBe("d2.getSeconds()", "22");
47 shouldBe("d2.getMilliseconds()", "33");
48 d2.setHours(11, 22, 33, 44);
49 shouldBe("d2.getHours()", "11");
50 shouldBe("d2.getMinutes()", "22");
51 shouldBe("d2.getSeconds()", "33");
52 shouldBe("d2.getMilliseconds()", "44");
53 d2.setMonth(3, 20);
54 shouldBe("d2.getMonth()", "3");
55 shouldBe("d2.getDate()", "20");
56 d2.setFullYear(1976, 3, 20);
57 shouldBe("d2.getFullYear()", "1976");
58 shouldBe("d2.getMonth()", "3");
59 shouldBe("d2.getDate()", "20");
61 // ### fix: shouldBe("d2.setYear(-1), d2.getFullYear()", "-1");
62 shouldBe("d2.setYear(0), d2.getFullYear()", "1900");
63 shouldBe("d2.setYear(1), d2.getFullYear()", "1901");
64 shouldBe("d2.setYear(99), d2.getFullYear()", "1999");
65 shouldBe("d2.setYear(100), d2.getFullYear()", "100");
66 shouldBe("d2.setYear(2050), d2.getFullYear()", "2050");
67 shouldBe("d2.setYear(1899), d2.getFullYear()", "1899");
68 shouldBe("d2.setYear(2000), d2.getFullYear()", "2000");
69 shouldBe("d2.setYear(2100), d2.getFullYear()", "2100");
71 // date parsing
72 // from kdelibs/kdecore/tests/krfcdatetest.cpp
73 var dateRef = new Date('Thu Nov 5 1994 18:15:30 GMT+0500');
74 // debug(dateRef);
75 shouldBe( "dateRef.getDay()", "6"); // It was in fact a Saturday
76 shouldBe( "dateRef.getDate()", "5");
77 shouldBe( "dateRef.getMonth()", "10");
78 shouldBe( "dateRef.getYear()", "94"); // like NS, and unlike IE, by default
79 shouldBe( "dateRef.getFullYear()", "1994");
80 shouldBe( "dateRef.getMinutes()", "15");
81 shouldBe( "dateRef.getSeconds()", "30");
82 shouldBe( "dateRef.getUTCDay()", "6"); // It was in fact a Saturday
83 shouldBe( "dateRef.getUTCDate()", "5");
84 shouldBe( "dateRef.getUTCMonth()", "10");
85 shouldBe( "dateRef.getUTCFullYear()", "1994");
86 shouldBe( "dateRef.getUTCHours()", "13");
87 shouldBe( "dateRef.getUTCMinutes()", "15");
88 shouldBe( "dateRef.getUTCSeconds()", "30");
90 d = new Date('Thu Nov 5 1994 18:15:30 GMT+05:00');
91 shouldBe( "d.toUTCString()", "dateRef.toUTCString()");
92 shouldBe( "d.toUTCString().replace('GMT', '+0000')", "'Sat, 05 Nov 1994 13:15:30 +0000'"); // It was in fact a Saturday
94 dateRef = new Date('Thu Nov 5 2065 18:15:30 GMT+0500');
95 // debug(dateRef);
96 shouldBe( "dateRef.getDay()", "4");
97 shouldBe( "dateRef.getDate()", "5");
98 shouldBe( "dateRef.getMonth()", "10");
99 // shouldBe( "dateRef.getYear()", "65"); // Should this be 65 or 165 ??
100 shouldBe( "dateRef.getFullYear()", "2065");
101 shouldBe( "dateRef.getMinutes()", "15");
102 shouldBe( "dateRef.getSeconds()", "30");
103 shouldBe( "dateRef.getUTCDay()", "4");
104 shouldBe( "dateRef.getUTCDate()", "5");
105 shouldBe( "dateRef.getUTCMonth()", "10");
106 shouldBe( "dateRef.getUTCFullYear()", "2065");
107 shouldBe( "dateRef.getUTCHours()", "13");
108 shouldBe( "dateRef.getUTCMinutes()", "15");
109 shouldBe( "dateRef.getUTCSeconds()", "30");
111 dateRef = new Date('Wed Nov 5 2064 18:15:30 GMT+0500'); // Leap year
112 // debug(dateRef);
113 shouldBe( "dateRef.getDay()", "3");
114 shouldBe( "dateRef.getDate()", "5");
115 shouldBe( "dateRef.getMonth()", "10");
116 // shouldBe( "dateRef.getYear()", "64"); // Should this be 64 or 164 ??
117 shouldBe( "dateRef.getFullYear()", "2064");
118 shouldBe( "dateRef.getMinutes()", "15");
119 shouldBe( "dateRef.getSeconds()", "30");
120 shouldBe( "dateRef.getUTCDay()", "3");
121 shouldBe( "dateRef.getUTCDate()", "5");
122 shouldBe( "dateRef.getUTCMonth()", "10");
123 shouldBe( "dateRef.getUTCFullYear()", "2064");
124 shouldBe( "dateRef.getUTCHours()", "13");
125 shouldBe( "dateRef.getUTCMinutes()", "15");
126 shouldBe( "dateRef.getUTCSeconds()", "30");
129 // Shouldn't this work?
130 dateRef = new Date('Sat Nov 5 1864 18:15:30 GMT+0500');
131 // debug(dateRef);
132 shouldBe( "dateRef.getDay()", "6");
133 shouldBe( "dateRef.getDate()", "5");
134 shouldBe( "dateRef.getMonth()", "10");
135 // shouldBe( "dateRef.getYear()", "64"); // Should this be 64 ??
136 shouldBe( "dateRef.getFullYear()", "1864");
137 shouldBe( "dateRef.getMinutes()", "15");
138 shouldBe( "dateRef.getSeconds()", "30");
139 shouldBe( "dateRef.getUTCDay()", "3");
140 shouldBe( "dateRef.getUTCDate()", "5");
141 shouldBe( "dateRef.getUTCMonth()", "10");
142 shouldBe( "dateRef.getUTCFullYear()", "1864");
143 shouldBe( "dateRef.getUTCHours()", "13");
144 shouldBe( "dateRef.getUTCMinutes()", "15");
145 shouldBe( "dateRef.getUTCSeconds()", "30");
148 d = new Date('Tue Nov 5 2024 18:15:30 GMT+05:00');
149 shouldBe( "d.toUTCString().replace('GMT', '+0000')", "'Tue, 05 Nov 2024 13:15:30 +0000'");
150 d = new Date('Mon Nov 5 2040 18:15:30 GMT+05:00');
151 shouldBe( "d.toUTCString().replace('GMT', '+0000')", "'Mon, 05 Nov 2040 13:15:30 +0000'");
152 d = new Date('Fri Nov 5 2100 18:15:30 GMT+05:00');
153 shouldBe( "d.toUTCString().replace('GMT', '+0000')", "'Fri, 05 Nov 2100 13:15:30 +0000'");
154 d = new Date('Fri Nov 5 2004 03:15:30 GMT+05:00'); // Timezone crosses day barrier
155 shouldBe( "d.toUTCString().replace('GMT', '+0000')", "'Thu, 04 Nov 2004 22:15:30 +0000'");
157 // AM/PM
158 shouldBe("(new Date('Dec 25 1995 1:30 PM UTC')).valueOf()", "819898200000");
159 shouldBe("(new Date('Dec 25 1995 1:30 pm UTC')).valueOf()", "819898200000");
160 shouldBe("(new Date('Dec 25 1995 1:30 AM UTC')).valueOf()", "819855000000");
161 shouldBe("(new Date('Dec 25 1995 1:30 am UTC')).valueOf()", "819855000000");
162 shouldBe("(new Date('Dec 25 1995 12:00 PM UTC')).valueOf()", "819892800000");
163 shouldBe("(new Date('Dec 25 1995 12:00 AM UTC')).valueOf()", "819849600000");
164 shouldBe("(new Date('Dec 25 1995 00:00 AM UTC')).valueOf()", "819849600000");
165 shouldBe("(new Date('Dec 25 1995 00:00 PM UTC')).valueOf()", "819892800000");
166 shouldBeTrue("isNaN(new Date('Dec 25 1995 13:30 AM UTC')).valueOf()");
169 // Don't work in any other browsers
170 d = new Date('Wednesday, 05-Nov-94 13:15:30 GMT');
171 shouldBe( "d.toUTCString()", "dateRef.toUTCString()");
173 d = new Date('Wed, 05-Nov-1994 13:15:30 GMT');
174 shouldBe( "d.toUTCString()", "dateRef.toUTCString()");
176 d = new Date('Wed, 05-November-1994 13:15:30 GMT');
177 shouldBe( "d.toUTCString()", "dateRef.toUTCString()");
179 // Works only in EST/EDT
180 d = new Date('November 5, 1994 08:15:30');
181 debug(d);
182 shouldBe( "d.toUTCString()", "dateRef.toUTCString()");
184 var dateRef2 = new Date('July 1, 2004 10:00 EDT');
185 d = new Date('July 1, 2004 10:00');
186 debug(d);
187 shouldBe( "d.toUTCString()", "dateRef2.toUTCString()");
189 shouldBe("new Date('Wednesday 09-Nov-99 13:12:40 GMT').getMonth()", "10"); // not parsed in moz
190 shouldBe("new Date('Sat, 01-Dec-2000 08:00:00 GMT').getMonth()", "11"); // not parsed in moz
193 shouldBe("new Date('Sat, 01 Dec 2000 08:00:00 GMT').getMonth()", "11");
194 shouldBe("new Date('01 Jan 99 22:00 +0100').getFullYear()", "1999");
195 shouldBe("new Date('May 09 1999 13:12:40 GMT').getDate()", "9");
196 shouldBe("new Date('Wednesday February 09 1999 13:12:40 GMT').getMonth()", "1");
197 shouldBe("new Date('Wednesday January 09 1999 13:12:40 GMT').getFullYear()", "1999");
198 shouldBe("new Date('Wednesday January 09 13:12:40 GMT 1999').getFullYear()", "1999");
199 shouldBe("new Date('Wednesday January 06 13:12:40 GMT 2100').getFullYear()", "2100");
200 shouldBe("(new Date('\\n21\\rFeb\\f\\v\\t 2004')).getFullYear()", "2004"); // ws
201 shouldBe("(new Date('Dec 25 1995 gmt')).valueOf()", "819849600000");
202 shouldBe("(new Date('Dec 25 1995 utc')).valueOf()", "819849600000");
204 // Those two fail in Konqueror, due to time_t being limited to 2037 !
205 // moved to evil-n.js shouldBe("new Date('3/31/2099').getFullYear()", "2099");
206 // moved to evil-n.js shouldBe("new Date('3/31/2099').getMonth()", "2");
207 //shouldBe("new Date('3/31/2099').getDate()",31);
209 shouldBe("new Date('3/31/2005').getDate()", "31");
210 shouldBe("new Date('3/31/2005').getHours()", "0");
211 shouldBe("new Date('7/31/2005').getHours()", "0"); // DST
212 shouldBe("new Date('3/31/2005 GMT').getFullYear()", "2005");
213 shouldBe("new Date('3/31/2005 12:45:15').getDate()", "31");
214 shouldBe("new Date('3/31/2005 12:45:15').getMonth()", "2");
215 shouldBe("new Date('3/31/2005 12:45:15').getSeconds()", "15");
216 shouldBe("new Date('2003/02/03').getMonth()", "1");
217 // ### not sure how to interpret this: new Date('25/12/2005')
218 // ### shouldBe("new Date('1950/02/03').getFullYear()", "1950");
219 shouldBe("new Date('2003/02/03 02:01:04 UTC').getSeconds()", "4");
221 var jul27Str = 'July 27, 2003'
222 var jul27Num = new Date(jul27Str).valueOf();
223 shouldBe("jul27Num", "Date.parse(jul27Str).valueOf()");
224 // expect NaN, not undefined
225 shouldBe("typeof Date.parse(0)", "'number'");
226 shouldBeTrue("isNaN(Date.parse(0))");
227 // parse string *object*
228 shouldBe("Date.parse(new String(jul27Str)).valueOf()", "jul27Num");
230 // invalid dates
231 shouldBeTrue("isNaN(Number(new Date('01 ANF 2000')))"); // middle of JANFEB :)
232 shouldBeTrue("isNaN(Number(new Date('ANF 01 2000')))");
234 d = new Date("January 1, 2000");
235 var oldHours = d.getHours();
236 d.setMonth(8);
237 shouldBe("oldHours", "d.getHours()");
239 // some time values in different (implementation) ranges
240 shouldBe("Date.UTC(1800, 0, 1)", "-5364662400000");
241 shouldBe("Date.UTC(1800, 2, 1)", "-5359564800000"); // one day after Feb 28th
242 shouldBe("Date.UTC(1899, 0, 1)", "-2240524800000");
243 shouldBe("Date.UTC(1900, 0, 1)", "-2208988800000");
244 shouldBe("Date.UTC(1960, 0, 1)", "-315619200000");
245 shouldBe("Date.UTC(1970, 0, 1)", "0");
246 shouldBe("Date.UTC(3000, 0, 1)", "32503680000000");
248 // same dates as above
249 shouldBe("(new Date(-5364662400000)).valueOf()", "-5364662400000");
250 shouldBe("(new Date(-2240524800000)).valueOf()", "-2240524800000");
251 shouldBe("(new Date(-2208988800000)).valueOf()", "-2208988800000");
252 shouldBe("(new Date(-315619200000)).valueOf()", "-315619200000");
253 shouldBe("(new Date(0)).valueOf()", "0");
254 shouldBe("(new Date(32503680000000)).valueOf()", "32503680000000");
256 d = new Date(2010, 0, 1);
257 //shouldBe("d.valueOf()", "32503676400000");
258 shouldBe("d.getDay()", "5");
260 // large and small year numbers
261 d = new Date(3000, 0, 1);
262 //shouldBe("d.valueOf()", "32503676400000");
263 //shouldBe("(new Date(3000, 0, 1)).valueOf()", "Date.UTC(3000, 0, 1)");
264 shouldBeTrue("d.getYear() == 1100 || d.getYear() == 3000");
265 shouldBe("d.getFullYear()", "3000");
266 shouldBe("d.getDay()", "3");
267 shouldBe("d.getHours()", "0");
268 shouldBe("new Date('3/31/2099').getFullYear()", "2099");
269 shouldBe("new Date('3/31/2099').getMonth()", "2");
271 d = new Date(Date.UTC(3000, 0, 1));
272 shouldBe("d.valueOf()", "32503680000000");
273 shouldBe("d.getUTCDay()", "3");
274 shouldBe("d.getUTCHours()", "0");
276 d = new Date(1899, 0, 1);
277 shouldBe("d.getFullYear()", "1899");
278 shouldBeTrue("d.getYear() == -1 || d.getYear() == 1899"); // Moz or IE
279 shouldBe("d.getDay()", "0");
280 shouldBe("d.getHours()", "0");
282 d = new Date(Date.UTC(3000, 0, 1));
283 shouldBe("d.getUTCDay()", "3");
285 d = new Date(Date.UTC(1899, 0, 1));
286 shouldBe("d.getUTCDay()", "0");
287 shouldBe( "d.toUTCString().replace('GMT', '+0000')", "'Sun, 01 Jan 1899 00:00:00 +0000'");
289 // out of range values. have to be caught by TimeClip()
290 shouldBe("Number(new Date(8.64E15))", "8.64E15");
291 shouldBe("Number(new Date(-8.64E15))", "-8.64E15");
292 shouldBeTrue("isNaN(new Date(8.6400001E15))");;
293 shouldBeTrue("isNaN(new Date(-8.6400001E15))");;
295 // other browsers don't mind the missing space
296 shouldBe("(new Date('January29,2005')).getDate()", "29");
298 shouldBeTrue("(new Date('12/25/1995 ::')).valueOf() == (new Date('12/25/1995')).valueOf()");
300 // Tolerance for high values in xx/xx/xxxx
301 shouldBe("new Date('03/30/2006').getDate()", "30");
302 shouldBe("new Date('Mar 30 2006').toString()", "new Date('03/30/2006').toString()");
303 shouldBe("new Date('30/03/2006').toString()", "new Date('Jun 03 2008').toString()");
304 shouldBe("new Date('24/55/2006').getFullYear()", "2008");
305 shouldBe("new Date('70/55/2006').getDate()", "27");
306 shouldBe("new Date('00/00/2006').toString()", "new Date('Nov 30 2005').toString()");
307 shouldBe("new Date('01/452/2006').toString()", "new Date('Mar 28 2007').toString()");
309 debug("End Of Test");