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 ";