js/src/tests/ecma/Date/15.9.4.2.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:3e57615827f6
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5
6
7 /**
8 File Name: 15.9.4.2.js
9 ECMA Section: 15.9.4.2 Date.parse()
10 Description: The parse() function applies the to ToString() operator
11 to its argument and interprets the resulting string as
12 a date. It returns a number, the UTC time value
13 corresponding to the date.
14
15 The string may be interpreted as a local time, a UTC
16 time, or a time in some other time zone, depending on
17 the contents of the string.
18
19 (need to test strings containing stuff with the time
20 zone specified, and verify that parse() returns the
21 correct GMT time)
22
23 so for any Date object x, all of these things should
24 be equal:
25
26 value tested in function:
27 x.valueOf() test_value()
28 Date.parse(x.toString()) test_tostring()
29 Date.parse(x.toGMTString()) test_togmt()
30
31 Date.parse(x.toLocaleString()) is not required to
32 produce the same number value as the preceding three
33 expressions. in general the value produced by
34 Date.parse is implementation dependent when given any
35 string value that could not be produced in that
36 implementation by the toString or toGMTString method.
37
38 value tested in function:
39 Date.parse( x.toLocaleString()) test_tolocale()
40
41 Author: christine@netscape.com
42 Date: 10 july 1997
43
44 */
45
46 var VERSION = "ECMA_1";
47 startTest();
48 var SECTION = "15.9.4.2";
49 var TITLE = "Date.parse()";
50
51 var TIME = 0;
52 var UTC_YEAR = 1;
53 var UTC_MONTH = 2;
54 var UTC_DATE = 3;
55 var UTC_DAY = 4;
56 var UTC_HOURS = 5;
57 var UTC_MINUTES = 6;
58 var UTC_SECONDS = 7;
59 var UTC_MS = 8;
60
61 var YEAR = 9;
62 var MONTH = 10;
63 var DATE = 11;
64 var DAY = 12;
65 var HOURS = 13;
66 var MINUTES = 14;
67 var SECONDS = 15;
68 var MS = 16;
69 var TYPEOF = "object";
70
71 // for TCMS, the gTestcases array must be global.
72 writeHeaderToLog("15.9.4.2 Date.parse()" );
73
74 // Dates around 1970
75
76 addNewTestCase( new Date(0),
77 "new Date(0)",
78 [0,1970,0,1,4,0,0,0,0,1969,11,31,3,16,0,0,0] );
79
80 addNewTestCase( new Date(-1),
81 "new Date(-1)",
82 [-1,1969,11,31,3,23,59,59,999,1969,11,31,3,15,59,59,999] );
83 addNewTestCase( new Date(28799999),
84 "new Date(28799999)",
85 [28799999,1970,0,1,4,7,59,59,999,1969,11,31,3,23,59,59,999] );
86 addNewTestCase( new Date(28800000),
87 "new Date(28800000)",
88 [28800000,1970,0,1,4,8,0,0,0,1970,0,1,4,0,0,0,0] );
89
90 // Dates around 2000
91
92 addNewTestCase( new Date(946684799999),
93 "new Date(946684799999)",
94 [946684799999,1999,11,31,5,23,59,59,999,1999,11,31,5,15,59,59,999] );
95 addNewTestCase( new Date(946713599999),
96 "new Date(946713599999)",
97 [946713599999,2000,0,1,6,7,59,59,999,1999,11,31,5,23,59,59,999] );
98 addNewTestCase( new Date(946684800000),
99 "new Date(946684800000)",
100 [946684800000,2000,0,1,6,0,0,0,0,1999,11,31,5, 16,0,0,0] );
101 addNewTestCase( new Date(946713600000),
102 "new Date(946713600000)",
103 [946713600000,2000,0,1,6,8,0,0,0,2000,0,1,6,0,0,0,0] );
104
105 // Dates around 1900
106
107 addNewTestCase( new Date(-2208988800000),
108 "new Date(-2208988800000)",
109 [-2208988800000,1900,0,1,1,0,0,0,0,1899,11,31,0,16,0,0,0] );
110
111 addNewTestCase( new Date(-2208988800001),
112 "new Date(-2208988800001)",
113 [-2208988800001,1899,11,31,0,23,59,59,999,1899,11,31,0,15,59,59,999] );
114
115 addNewTestCase( new Date(-2208960000001),
116 "new Date(-2208960000001)",
117 [-2208960000001,1900,0,1,1,7,59,59,0,1899,11,31,0,23,59,59,999] );
118 addNewTestCase( new Date(-2208960000000),
119 "new Date(-2208960000000)",
120 [-2208960000000,1900,0,1,1,8,0,0,0,1900,0,1,1,0,0,0,0] );
121 addNewTestCase( new Date(-2208959999999),
122 "new Date(-2208959999999)",
123 [-2208959999999,1900,0,1,1,8,0,0,1,1900,0,1,1,0,0,0,1] );
124
125 // Dates around Feb 29, 2000
126
127 var PST_FEB_29_2000 = UTC_FEB_29_2000 + 8*msPerHour;
128
129 addNewTestCase( new Date(UTC_FEB_29_2000),
130 "new Date(" + UTC_FEB_29_2000 +")",
131 [UTC_FEB_29_2000,2000,0,1,6,0,0,0,0,1999,11,31,5,16,0,0,0] );
132 addNewTestCase( new Date(PST_FEB_29_2000),
133 "new Date(" + PST_FEB_29_2000 +")",
134 [PST_FEB_29_2000,2000,0,1,6,8.0,0,0,2000,0,1,6,0,0,0,0]);
135
136 // Dates around Jan 1 2005
137
138 var PST_JAN_1_2005 = UTC_JAN_1_2005 + 8*msPerHour;
139
140 addNewTestCase( new Date(UTC_JAN_1_2005),
141 "new Date("+ UTC_JAN_1_2005 +")",
142 [UTC_JAN_1_2005,2005,0,1,6,0,0,0,0,2004,11,31,5,16,0,0,0] );
143 addNewTestCase( new Date(PST_JAN_1_2005),
144 "new Date("+ PST_JAN_1_2005 +")",
145 [PST_JAN_1_2005,2005,0,1,6,8,0,0,0,2005,0,1,6,0,0,0,0] );
146
147
148 test();
149
150 function addNewTestCase( DateCase, DateString, ResultArray ) {
151 DateCase = DateCase;
152
153 new TestCase( SECTION, DateString+".getTime()", ResultArray[TIME], DateCase.getTime() );
154 new TestCase( SECTION, DateString+".valueOf()", ResultArray[TIME], DateCase.valueOf() );
155 new TestCase( SECTION, "Date.parse(" + DateCase.toString() +")", Math.floor(ResultArray[TIME]/1000)*1000, Date.parse(DateCase.toString()) );
156 new TestCase( SECTION, "Date.parse(" + DateCase.toGMTString() +")", Math.floor(ResultArray[TIME]/1000)*1000, Date.parse(DateCase.toGMTString()) );
157 }

mercurial