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.5.3.js
24 ECMA Section: 15.9.5.3 Date.prototype.toDateString()
26 This function returns a string value. The contents of the string are
27 implementation dependent, but are intended to represent the "date"
28 portion of the Date in the current time zone in a convenient,
29 human-readable form. We can't test the content of the string,
30 but can verify that the string is parsable by Date.parse
32 The toDateString function is not generic; it generates a runtime error
33 if its 'this' value is not a Date object. Therefore it cannot be transferred
34 to other kinds of objects for use as a method.
36 Author: pschwartau@netscape.com
37 Date: 14 november 2000 (adapted from ecma/Date/15.9.5.2.js)
40 var SECTION
= "15.9.5.3";
41 var VERSION
= "ECMA_3";
42 var TITLE
= "Date.prototype.toDateString()";
50 writeHeaderToLog( SECTION
+ " "+ TITLE
);
53 //-----------------------------------------------------------------------------------------------------
54 var testcases
= new Array();
55 //-----------------------------------------------------------------------------------------------------
58 // first, some generic tests -
60 status
= "typeof (now.toDateString())";
61 actual
= typeof (now
.toDateString());
65 status
= "Date.prototype.toDateString.length";
66 actual
= Date
.prototype.toDateString
.length
;
70 /* Date.parse is accurate to the second; valueOf() to the millisecond.
71 Here we expect them to coincide, as we expect a time of exactly midnight - */
72 status
= "(Date.parse(now.toDateString()) - (midnight(now)).valueOf()) == 0";
73 actual
= (Date
.parse(now
.toDateString()) - (midnight(now
)).valueOf()) == 0;
81 addDateTestCase(TZ_ADJUST
);
85 addDateTestCase(TIME_1900
);
86 addDateTestCase(TIME_1900
- TZ_ADJUST
);
90 addDateTestCase(TIME_2000
);
91 addDateTestCase(TIME_2000
- TZ_ADJUST
);
95 addDateTestCase(UTC_29_FEB_2000
);
96 addDateTestCase(UTC_29_FEB_2000
- 1000);
97 addDateTestCase(UTC_29_FEB_2000
- TZ_ADJUST
);
101 addDateTestCase(UTC_1_JAN_2005
);
102 addDateTestCase(UTC_1_JAN_2005
- 1000);
103 addDateTestCase(UTC_1_JAN_2005
- TZ_ADJUST
);
107 //-----------------------------------------------------------------------------------------------------
109 //-----------------------------------------------------------------------------------------------------
112 function addTestCase()
114 testcases
[tc
++] = new TestCase( SECTION
, status
, expect
, actual
);
118 function addDateTestCase(date_given_in_milliseconds
)
120 var givenDate
= new Date(date_given_in_milliseconds
);
122 status
= 'Date.parse(' + givenDate
+ ').toDateString())';
123 actual
= Date
.parse(givenDate
.toDateString());
124 expect
= Date
.parse(midnight(givenDate
));
129 function midnight(givenDate
)
131 // midnight on the given date -
132 return new Date(givenDate
.getFullYear(), givenDate
.getMonth(), givenDate
.getDate());
138 for ( tc
=0; tc
< testcases
.length
; tc
++ )
140 testcases
[tc
].passed
= writeTestCaseResult(
141 testcases
[tc
].expect
,
142 testcases
[tc
].actual
,
143 testcases
[tc
].description
+ " = " + testcases
[tc
].actual
);
145 testcases
[tc
].reason
+= ( testcases
[tc
].passed
) ? "" : "wrong value ";