Fix test by constructing valid date from toDateString() and toLocaleTimeString(), no bug, not part of the build

This commit is contained in:
bob%bclary.com 2005-11-24 04:46:08 +00:00
parent 562ff36e70
commit 0c69c8767b

View File

@ -1,3 +1,4 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
@ -35,104 +36,84 @@
*
* ***** END LICENSE BLOCK ***** */
/**
File Name: 15.9.5.7.js
ECMA Section: 15.9.5.7 Date.prototype.toLocaleTimeString()
Description:
This function returns a string value. The contents of the string are
implementation dependent, but are intended to represent the "time"
portion of the Date in the current time zone in a convenient,
human-readable form. We test the content of the string by checking
that d.toDateString() + d.toLocaleTimeString() == d.toString()
File Name: 15.9.5.7.js
ECMA Section: 15.9.5.7 Date.prototype.toLocaleTimeString()
Description:
This function returns a string value. The contents of the string are
implementation dependent, but are intended to represent the "time"
portion of the Date in the current time zone in a convenient,
human-readable form. We test the content of the string by checking
that
The only headache is that as of this writing the "GMT ..." portion of
d.toString() is NOT included in d.toLocaleTimeString() as it is in
d.toTimeString(). So we have to take that into account.
new Date(d.toDateString() + " " + d.toLocaleTimeString()) == d
Author: pschwartau@netscape.com
Date: 14 november 2000
Revised: 07 january 2002 because of a change in JS Date format:
Author: pschwartau@netscape.com
Date: 14 november 2000
Revised: 07 january 2002 because of a change in JS Date format:
Revised: 21 November 2005 since the string comparison stuff is horked.
bclary
See http://bugzilla.mozilla.org/show_bug.cgi?id=118266 (SpiderMonkey)
See http://bugzilla.mozilla.org/show_bug.cgi?id=118636 (Rhino)
See http://bugzilla.mozilla.org/show_bug.cgi?id=118266 (SpiderMonkey)
See http://bugzilla.mozilla.org/show_bug.cgi?id=118636 (Rhino)
*/
//-----------------------------------------------------------------------------
var SECTION = "15.9.5.7";
var VERSION = "ECMA_3";
var TITLE = "Date.prototype.toLocaleTimeString()";
var SECTION = "15.9.5.7";
var VERSION = "ECMA_3";
var TITLE = "Date.prototype.toLocaleTimeString()";
var status = '';
var actual = '';
var expect = '';
var givenDate;
var year = '';
var regexp = '';
var TimeString = '';
var reducedDateString = '';
var hopeThisIsLocaleTimeString = '';
var cnERR ='OOPS! FATAL ERROR: no regexp match in extractLocaleTimeString()';
var status = '';
var actual = '';
var expect = '';
var givenDate;
var year = '';
var regexp = '';
var TimeString = '';
var reducedDateString = '';
var hopeThisIsLocaleTimeString = '';
var cnERR ='OOPS! FATAL ERROR: no regexp match in extractLocaleTimeString()';
startTest();
writeHeaderToLog( SECTION + " "+ TITLE);
startTest();
writeHeaderToLog( SECTION + " "+ TITLE);
// first, a couple generic tests -
status = "typeof (now.toLocaleTimeString())";
actual = typeof (now.toLocaleTimeString());
expect = "string";
addTestCase();
//-----------------------------------------------------------------------------------------------------
var testcases = new Array();
//-----------------------------------------------------------------------------------------------------
status = "Date.prototype.toLocaleTimeString.length";
actual = Date.prototype.toLocaleTimeString.length;
expect = 0;
addTestCase();
// first, a couple generic tests -
status = "typeof (now.toLocaleTimeString())";
actual = typeof (now.toLocaleTimeString());
expect = "string";
addTestCase();
status = "Date.prototype.toLocaleTimeString.length";
actual = Date.prototype.toLocaleTimeString.length;
expect = 0;
addTestCase();
// 1970
addDateTestCase(0);
addDateTestCase(TZ_ADJUST);
// 1970
addDateTestCase(0);
addDateTestCase(TZ_ADJUST);
// 1900
addDateTestCase(TIME_1900);
addDateTestCase(TIME_1900 - TZ_ADJUST);
// 1900
addDateTestCase(TIME_1900);
addDateTestCase(TIME_1900 - TZ_ADJUST);
// 2000
addDateTestCase(TIME_2000);
addDateTestCase(TIME_2000 - TZ_ADJUST);
// 2000
addDateTestCase(TIME_2000);
addDateTestCase(TIME_2000 - TZ_ADJUST);
// 29 Feb 2000
addDateTestCase(UTC_29_FEB_2000);
addDateTestCase(UTC_29_FEB_2000 - 1000);
addDateTestCase(UTC_29_FEB_2000 - TZ_ADJUST);
// 29 Feb 2000
addDateTestCase(UTC_29_FEB_2000);
addDateTestCase(UTC_29_FEB_2000 - 1000);
addDateTestCase(UTC_29_FEB_2000 - TZ_ADJUST);
// Now
addDateTestCase( TIME_NOW);
addDateTestCase( TIME_NOW - TZ_ADJUST);
// Now
addDateTestCase( TIME_NOW);
addDateTestCase( TIME_NOW - TZ_ADJUST);
// 2005
addDateTestCase(UTC_1_JAN_2005);
addDateTestCase(UTC_1_JAN_2005 - 1000);
addDateTestCase(UTC_1_JAN_2005 - TZ_ADJUST);
//-----------------------------------------------------------------------------------------------------
test();
//-----------------------------------------------------------------------------------------------------
// 2005
addDateTestCase(UTC_1_JAN_2005);
addDateTestCase(UTC_1_JAN_2005 - 1000);
addDateTestCase(UTC_1_JAN_2005 - TZ_ADJUST);
test();
function addTestCase()
{
@ -142,85 +123,14 @@ function addTestCase()
function addDateTestCase(date_given_in_milliseconds)
{
givenDate = new Date(date_given_in_milliseconds);
var s = 'new Date(' + date_given_in_milliseconds + ')';
givenDate = new Date(date_given_in_milliseconds);
status = '(' + givenDate + ').toLocaleTimeString()';
actual = givenDate.toLocaleTimeString();
expect = extractLocaleTimeString(givenDate);
addTestCase();
status = 'd = ' + s +
'; d == new Date(d.toDateString() + " " + d.toLocaleTimeString())';
expect = givenDate.toString();
actual = new Date(givenDate.toDateString() +
' ' + givenDate.toLocaleTimeString()).toString();
addTestCase();
}
/*
* As of 2002-01-07, the format for JavaScript dates changed.
* See http://bugzilla.mozilla.org/show_bug.cgi?id=118266 (SpiderMonkey)
* See http://bugzilla.mozilla.org/show_bug.cgi?id=118636 (Rhino)
*
* WAS: Mon Jan 07 13:40:34 GMT-0800 (Pacific Standard Time) 2002
* NOW: Mon Jan 07 2002 13:40:34 GMT-0800 (Pacific Standard Time)
*
* So first, use a regexp of the form /date.toDateString()(.*)$/
* to capture the TimeString into the first backreference.
*
* Then remove the GMT string from TimeString (see introduction above)
*/
function extractLocaleTimeString(date)
{
regexp = new RegExp(date.toDateString() + '(.*)' + '$');
try
{
TimeString = date.toString().match(regexp)[1];
}
catch(e)
{
return cnERR;
}
/*
* Now remove the GMT part of the TimeString.
* Guard against dates with two "GMT"s, like:
* Jan 01 00:00:00 GMT+0000 (GMT Standard Time)
*/
regexp= /([^G]*)GMT.*/;
try
{
hopeThisIsLocaleTimeString = TimeString.match(regexp)[1];
}
catch(e)
{
return TimeString;
}
// trim any leading or trailing spaces -
return trimL(trimR(hopeThisIsLocaleTimeString));
}
function trimL(s)
{
if (!s) {return cnEmptyString;};
for (var i = 0; i!=s.length; i++) {if (s[i] != ' ') {break;}}
return s.substring(i);
}
function trimR(s)
{
for (var i = (s.length - 1); i!=-1; i--) {if (s[i] != ' ') {break;}}
return s.substring(0, i+1);
}
function test()
{
for ( tc=0; tc < testcases.length; tc++ )
{
testcases[tc].passed = writeTestCaseResult(
testcases[tc].expect,
testcases[tc].actual,
testcases[tc].description + " = " + testcases[tc].actual );
testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value ";
}
stopTest();
return (testcases);
}