зеркало из https://github.com/mozilla/gecko-dev.git
Fix test by constructing valid date from toDateString() and toLocaleTimeString(), no bug, not part of the build
This commit is contained in:
Родитель
562ff36e70
Коммит
0c69c8767b
|
@ -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);
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче