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/
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.
11
* The Original Code is Mozilla Communicator client code, released March
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
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.
29
The [[Class]] property of the newly constructed object
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)
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),
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))).
49
This tests the returned value of a newly constructed
52
Author: christine@netscape.com
56
var SECTION = "15.9.3.1";
57
var VERSION = "ECMA_1";
59
var TITLE = "new Date( year, month, date, hours, minutes, seconds, ms )";
80
writeHeaderToLog( SECTION + " "+ TITLE);
82
var testcases = new Array();
87
function getTestCases( ) {
88
// all the "ResultArrays" below are hard-coded to Pacific Standard Time values -
89
var TZ_ADJUST = TZ_PST * msPerHour;
93
addNewTestCase( new Date(1899,11,31,16,0,0,0),
94
"new Date(1899,11,31,16,0,0,0)",
95
[TIME_1900,1900,0,1,1,0,0,0,0,1899,11,31,0,16,0,0,0] );
97
addNewTestCase( new Date(1899,11,31,15,59,59,999),
98
"new Date(1899,11,31,15,59,59,999)",
99
[TIME_1900-1,1899,11,31,0,23,59,59,999,1899,11,31,0,15,59,59,999] );
101
addNewTestCase( new Date(1899,11,31,23,59,59,999),
102
"new Date(1899,11,31,23,59,59,999)",
103
[TIME_1900-TZ_ADJUST-1,1900,0,1,1,7,59,59,999,1899,11,31,0,23,59,59,999] );
105
addNewTestCase( new Date(1900,0,1,0,0,0,0),
106
"new Date(1900,0,1,0,0,0,0)",
107
[TIME_1900-TZ_ADJUST,1900,0,1,1,8,0,0,0,1900,0,1,1,0,0,0,0] );
109
addNewTestCase( new Date(1900,0,1,0,0,0,1),
110
"new Date(1900,0,1,0,0,0,1)",
111
[TIME_1900-TZ_ADJUST+1,1900,0,1,1,8,0,0,1,1900,0,1,1,0,0,0,1] );
115
var UTC_YEAR_2005 = TIME_2000 + TimeInYear(2000) + TimeInYear(2001) +
116
TimeInYear(2002) + TimeInYear(2003) + TimeInYear(2004);
118
addNewTestCase( new Date(2005,0,1,0,0,0,0),
119
"new Date(2005,0,1,0,0,0,0)",
120
[UTC_YEAR_2005-TZ_ADJUST,2005,0,1,6,8,0,0,0,2005,0,1,6,0,0,0,0] );
122
addNewTestCase( new Date(2004,11,31,16,0,0,0),
123
"new Date(2004,11,31,16,0,0,0)",
124
[UTC_YEAR_2005,2005,0,1,6,0,0,0,0,2004,11,31,5,16,0,0,0] );
127
This test case is incorrect. Need to fix the DaylightSavings functions in
128
shell.js for this to work properly.
130
// Daylight Savings test case
132
var DST_START_1998 = UTC( GetSecondSundayInMarch(TimeFromYear(1998)) + 2*msPerHour )
134
addNewTestCase( new Date(1998,3,5,1,59,59,999),
135
"new Date(1998,3,5,1,59,59,999)",
136
[DST_START_1998-1,1998,3,5,0,9,59,59,999,1998,3,5,0,1,59,59,999] );
138
addNewTestCase( new Date(1998,3,5,2,0,0,0),
139
"new Date(1998,3,5,2,0,0,0)",
140
[DST_START_1998,1998,3,5,0,10,0,0,0,1998,3,5,0,3,0,0,0]);
142
var DST_END_1998 = UTC( GetFirstSundayInNovember(TimeFromYear(1998)) + 2*msPerHour );
144
addNewTestCase ( new Date(1998,9,25,1,59,59,999),
145
"new Date(1998,9,25,1,59,59,999)",
146
[DST_END_1998-1,1998,9,25,0,8,59,59,999,1998,9,25,0,1,59,59,999] );
148
addNewTestCase ( new Date(1998,9,25,2,0,0,0),
149
"new Date(1998,9,25,2,0,0,0)",
150
[DST_END_1998,1998,9,25,0,9,0,0,0,1998,9,25,0,1,0,0,0] );
154
function addNewTestCase( DateCase, DateString, ResultArray ) {
155
//adjust hard-coded ResultArray for tester's timezone instead of PST
156
adjustResultArray(ResultArray);
158
var item = testcases.length;
160
testcases[item++] = new TestCase( SECTION, DateString+".getTime()", ResultArray[TIME], DateCase.getTime() );
161
testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", ResultArray[TIME], DateCase.valueOf() );
163
testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", ResultArray[UTC_YEAR], DateCase.getUTCFullYear() );
164
testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", ResultArray[UTC_MONTH], DateCase.getUTCMonth() );
165
testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", ResultArray[UTC_DATE], DateCase.getUTCDate() );
166
testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", ResultArray[UTC_DAY], DateCase.getUTCDay() );
167
testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", ResultArray[UTC_HOURS], DateCase.getUTCHours() );
168
testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", ResultArray[UTC_MINUTES],DateCase.getUTCMinutes() );
169
testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", ResultArray[UTC_SECONDS],DateCase.getUTCSeconds() );
170
testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", ResultArray[UTC_MS], DateCase.getUTCMilliseconds() );
172
testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", ResultArray[YEAR], DateCase.getFullYear() );
173
testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", ResultArray[MONTH], DateCase.getMonth() );
174
testcases[item++] = new TestCase( SECTION, DateString+".getDate()", ResultArray[DATE], DateCase.getDate() );
175
testcases[item++] = new TestCase( SECTION, DateString+".getDay()", ResultArray[DAY], DateCase.getDay() );
176
testcases[item++] = new TestCase( SECTION, DateString+".getHours()", ResultArray[HOURS], DateCase.getHours() );
177
testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", ResultArray[MINUTES], DateCase.getMinutes() );
178
testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", ResultArray[SECONDS], DateCase.getSeconds() );
179
testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", ResultArray[MS], DateCase.getMilliseconds() );
183
for( tc = 0; tc < testcases.length; tc++ ) {
185
testcases[tc].passed = writeTestCaseResult(
186
testcases[tc].expect,
187
testcases[tc].actual,
188
testcases[tc].description +" = " +
189
testcases[tc].actual );