]>
Commit | Line | Data |
---|---|---|
b37bf2e1 A |
1 | /* The contents of this file are subject to the Netscape Public |
2 | * License Version 1.1 (the "License"); you may not use this file | |
3 | * except in compliance with the License. You may obtain a copy of | |
4 | * the License at http://www.mozilla.org/NPL/ | |
5 | * | |
6 | * Software distributed under the License is distributed on an "AS | |
7 | * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or | |
8 | * implied. See the License for the specific language governing | |
9 | * rights and limitations under the License. | |
10 | * | |
11 | * The Original Code is Mozilla Communicator client code, released March | |
12 | * 31, 1998. | |
13 | * | |
14 | * The Initial Developer of the Original Code is Netscape Communications | |
15 | * Corporation. Portions created by Netscape are | |
16 | * Copyright (C) 1998 Netscape Communications Corporation. All | |
17 | * Rights Reserved. | |
18 | * | |
19 | * Contributor(s): | |
20 | * | |
21 | */ | |
22 | /** | |
23 | File Name: 15.9.3.1.js | |
24 | ECMA Section: 15.9.3.1 new Date (year, month, date, hours, minutes, seconds, ms) | |
25 | Description: The [[Prototype]] property of the newly constructed | |
26 | object is set to the original Date prototype object, | |
27 | the one that is the initial value of Date.prototype. | |
28 | ||
29 | The [[Class]] property of the newly constructed object | |
30 | is set as follows: | |
31 | 1. Call ToNumber(year) | |
32 | 2. Call ToNumber(month) | |
33 | 3. Call ToNumber(date) | |
34 | 4. Call ToNumber(hours) | |
35 | 5. Call ToNumber(minutes) | |
36 | 6. Call ToNumber(seconds) | |
37 | 7. Call ToNumber(ms) | |
38 | 8. If Result(1)is NaN and 0 <= ToInteger(Result(1)) <= | |
39 | 99, Result(8) is 1900+ToInteger(Result(1)); otherwise, | |
40 | Result(8) is Result(1) | |
41 | 9. Compute MakeDay(Result(8), Result(2), Result(3) | |
42 | 10. Compute MakeTime(Result(4), Result(5), Result(6), | |
43 | Result(7) | |
44 | 11. Compute MakeDate(Result(9), Result(10)) | |
45 | 12. Set the [[Value]] property of the newly constructed | |
46 | object to TimeClip(UTC(Result(11))). | |
47 | ||
48 | ||
49 | This tests the returned value of a newly constructed | |
50 | Date object. | |
51 | ||
52 | Author: christine@netscape.com | |
53 | Date: 7 july 1997 | |
54 | */ | |
55 | ||
56 | var TIME = 0; | |
57 | var UTC_YEAR = 1; | |
58 | var UTC_MONTH = 2; | |
59 | var UTC_DATE = 3; | |
60 | var UTC_DAY = 4; | |
61 | var UTC_HOURS = 5; | |
62 | var UTC_MINUTES = 6; | |
63 | var UTC_SECONDS = 7; | |
64 | var UTC_MS = 8; | |
65 | ||
66 | var YEAR = 9; | |
67 | var MONTH = 10; | |
68 | var DATE = 11; | |
69 | var DAY = 12; | |
70 | var HOURS = 13; | |
71 | var MINUTES = 14; | |
72 | var SECONDS = 15; | |
73 | var MS = 16; | |
74 | ||
75 | // for TCMS, the testcases array must be global. | |
76 | var SECTION = "15.9.3.1"; | |
77 | var TITLE = "Date( year, month, date, hours, minutes, seconds )"; | |
78 | ||
79 | writeHeaderToLog( SECTION+" " +TITLE ); | |
80 | ||
81 | var testcases = new Array(); | |
82 | getTestCases(); | |
83 | ||
84 | // all tests must call a function that returns an array of TestCase object | |
85 | test(); | |
86 | ||
87 | function getTestCases( ) { | |
88 | ||
89 | // Dates around 1970 | |
90 | ||
91 | addNewTestCase( new Date( 1969,11,31,15,59,59), | |
92 | "new Date( 1969,11,31,15,59,59)", | |
93 | [-1000,1969,11,31,3,23,59,59,0,1969,11,31,3,15,59,59,0] ); | |
94 | ||
95 | addNewTestCase( new Date( 1969,11,31,16,0,0), | |
96 | "new Date( 1969,11,31,16,0,0)", | |
97 | [0,1970,0,1,4,0,0,0,0,1969,11,31,3,16,0,0,0] ); | |
98 | ||
99 | addNewTestCase( new Date( 1969,11,31,23,59,59), | |
100 | "new Date( 1969,11,31,23,59,59)", | |
101 | [28799000,1970,0,1,4,7,59,59,0,1969,11,31,3,23,59,59,0] ); | |
102 | ||
103 | addNewTestCase( new Date( 1970, 0, 1, 0, 0, 0), | |
104 | "new Date( 1970, 0, 1, 0, 0, 0)", | |
105 | [28800000,1970,0,1,4,8,0,0,0,1970,0,1,4,0,0,0,0] ); | |
106 | ||
107 | addNewTestCase( new Date( 1969,11,31,16,0,0), | |
108 | "new Date( 1969,11,31,16,0,0)", | |
109 | [0,1970,0,1,4,0,0,0,0,1969,11,31,3,16,0,0,0] ); | |
110 | /* | |
111 | // Dates around 2000 | |
112 | ||
113 | addNewTestCase( new Date( 1999,11,31,15,59,59), | |
114 | "new Date( 1999,11,31,15,59,59)", | |
115 | [946684799000,1999,11,31,5,23,59,59,0,1999,11,31,5,15,59,59,0] ); | |
116 | ||
117 | addNewTestCase( new Date( 1999,11,31,16,0,0), | |
118 | "new Date( 1999,11,31,16,0,0)", | |
119 | [946684800000,2000,0,1,6,0,0,0,0,1999,11,31,5, 16,0,0,0] ); | |
120 | ||
121 | addNewTestCase( new Date( 2000,0,1,0,0,0), | |
122 | "new Date( 2000,0,1,0,0,0)", | |
123 | [946713600000,2000,0,1,6,8,0,0,0,2000,0,1,6,0,0,0,0] ); | |
124 | ||
125 | // Dates around 1900 | |
126 | ||
127 | addNewTestCase( new Date(1899,11,31,16,0,0), | |
128 | "new Date(1899,11,31,16,0,0)", | |
129 | [-2208988800000,1900,0,1,1,0,0,0,0,1899,11,31,0,16,0,0,0] ); | |
130 | ||
131 | addNewTestCase( new Date(1899,11,31,15,59,59), | |
132 | "new Date(1899,11,31,15,59,59)", | |
133 | [-2208988801000,1899,11,31,0,23,59,59,0,1899,11,31,0,15,59,59,0] ); | |
134 | ||
135 | addNewTestCase( new Date(1900,0,1,0,0,0), | |
136 | "new Date(1900,0,1,0,0,0)", | |
137 | [-2208960000000,1900,0,1,1,8,0,0,0,1900,0,1,1,0,0,0,0] ); | |
138 | ||
139 | addNewTestCase( new Date(1900,0,1,0,0,1), | |
140 | "new Date(1900,0,1,0,0,1)", | |
141 | [-2208959999000,1900,0,1,1,8,0,1,0,1900,0,1,1,0,0,1,0] ); | |
142 | ||
143 | var UTC_FEB_29_2000 = TIME_2000 + msPerDay*31 + msPerDay*28; | |
144 | var PST_FEB_29_2000 = UTC_FEB_29_2000 + 8*msPerHour; | |
145 | ||
146 | // Dates around Feb 29, 2000 | |
147 | addNewTestCase( new Date(2000,1,28,16,0,0,0), | |
148 | "new Date(2000,1,28,16,0,0,0)", | |
149 | [UTC_FEB_29_2000,2000,1,29,2,0,0,0,0,2000,1,28,1,16,0,0,0,0] ); | |
150 | ||
151 | addNewTestCase( new Date(2000,1,29,0,0,0,0), | |
152 | "new Date(2000,1,29,0,0,0,0)", | |
153 | [PST_FEB_29_2000,2000,1,29,2,8,0,0,0,2000,1,29,2,0,0,0,0] ); | |
154 | ||
155 | addNewTestCase( new Date(2000,1,29,24,0,0,0), | |
156 | "new Date(2000,1,29,24,0,0,0)", | |
157 | [PST_FEB_29_2000+msPerDay,2000,2,1,3,8,0,0,0,2000,2,1,3,0,0,0,0] ); | |
158 | ||
159 | // Dates around Jan 1, 2005 | |
160 | ||
161 | var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000) + TimeInYear(2001) + | |
162 | TimeInYear(2002)+ TimeInYear(2003) + TimeInYear(2004); | |
163 | var PST_JAN_1_2005 = UTC_JAN_1_2005 + 8*msPerHour; | |
164 | ||
165 | addNewTestCase( new Date(2005,0,1,0,0,0,0), | |
166 | "new Date(2005,0,1,0,0,0,0)", | |
167 | [PST_JAN_1_2005,2005,0,1,6,8,0,0,0,2005,0,1,6,0,0,0,0] ); | |
168 | ||
169 | addNewTestCase( new Date(2004,11,31,16,0,0,0), | |
170 | "new Date(2004,11,31,16,0,0,0)", | |
171 | [UTC_JAN_1_2005,2005,0,1,6,0,0,0,0,2004,11,31,5,16,0,0,0] ); | |
172 | */ | |
173 | /* | |
174 | This test case is incorrect. Need to fix the DaylightSavings functions in | |
175 | shell.js for this to work properly. | |
176 | ||
177 | // Daylight Savings Time | |
178 | ||
179 | var DST_START_1998 = UTC( GetSecondSundayInMarch(TimeFromYear(1998)) + 2*msPerHour ) | |
180 | ||
181 | addNewTestCase( new Date(1998,3,5,1,59,59,999), | |
182 | "new Date(1998,3,5,1,59,59,999)", | |
183 | [DST_START_1998-1,1998,3,5,0,9,59,59,999,1998,3,5,0,1,59,59,999] ); | |
184 | ||
185 | addNewTestCase( new Date(1998,3,5,2,0,0,0), | |
186 | "new Date(1998,3,5,2,0,0,0)", | |
187 | [DST_START_1998,1998,3,5,0,10,0,0,0,1998,3,5,0,3,0,0,0]); | |
188 | ||
189 | var DST_END_1998 = UTC( GetFirstSundayInNovember(TimeFromYear(1998)) + 2*msPerHour ); | |
190 | ||
191 | addNewTestCase ( new Date(1998,9,25,1,59,59,999), | |
192 | "new Date(1998,9,25,1,59,59,999)", | |
193 | [DST_END_1998-1,1998,9,25,0,8,59,59,999,1998,9,25,0,1,59,59,999] ); | |
194 | ||
195 | addNewTestCase ( new Date(1998,9,25,2,0,0,0), | |
196 | "new Date(1998,9,25,2,0,0,0)", | |
197 | [DST_END_1998,1998,9,25,0,9,0,0,0,1998,9,25,0,1,0,0,0] ); | |
198 | */ | |
199 | } | |
200 | ||
201 | function addNewTestCase( DateCase, DateString, ResultArray ) { | |
202 | //adjust hard-coded ResultArray for tester's timezone instead of PST | |
203 | adjustResultArray(ResultArray); | |
204 | ||
205 | item = testcases.length; | |
206 | ||
207 | testcases[item++] = new TestCase( SECTION, DateString+".getTime()", ResultArray[TIME], DateCase.getTime() ); | |
208 | testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", ResultArray[TIME], DateCase.valueOf() ); | |
209 | ||
210 | testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", ResultArray[UTC_YEAR], DateCase.getUTCFullYear() ); | |
211 | testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", ResultArray[UTC_MONTH], DateCase.getUTCMonth() ); | |
212 | testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", ResultArray[UTC_DATE], DateCase.getUTCDate() ); | |
213 | testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", ResultArray[UTC_DAY], DateCase.getUTCDay() ); | |
214 | testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", ResultArray[UTC_HOURS], DateCase.getUTCHours() ); | |
215 | testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", ResultArray[UTC_MINUTES],DateCase.getUTCMinutes() ); | |
216 | testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", ResultArray[UTC_SECONDS],DateCase.getUTCSeconds() ); | |
217 | testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", ResultArray[UTC_MS], DateCase.getUTCMilliseconds() ); | |
218 | ||
219 | testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", ResultArray[YEAR], DateCase.getFullYear() ); | |
220 | testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", ResultArray[MONTH], DateCase.getMonth() ); | |
221 | testcases[item++] = new TestCase( SECTION, DateString+".getDate()", ResultArray[DATE], DateCase.getDate() ); | |
222 | testcases[item++] = new TestCase( SECTION, DateString+".getDay()", ResultArray[DAY], DateCase.getDay() ); | |
223 | testcases[item++] = new TestCase( SECTION, DateString+".getHours()", ResultArray[HOURS], DateCase.getHours() ); | |
224 | testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", ResultArray[MINUTES], DateCase.getMinutes() ); | |
225 | testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", ResultArray[SECONDS], DateCase.getSeconds() ); | |
226 | testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", ResultArray[MS], DateCase.getMilliseconds() ); | |
227 | ||
228 | } | |
229 | ||
230 | function test() { | |
231 | for( tc=0; tc < testcases.length; tc++ ) { | |
232 | testcases[tc].passed = writeTestCaseResult( | |
233 | testcases[tc].expect, | |
234 | testcases[tc].actual, | |
235 | testcases[tc].description +" = " + | |
236 | testcases[tc].actual ); | |
237 | } | |
238 | stopTest(); | |
239 | return testcases; | |
240 | } | |
241 |