summaryrefslogtreecommitdiffstats
path: root/Source/JavaScriptCore/tests/mozilla/ecma_3/Date/15.9.5.7.js
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/tests/mozilla/ecma_3/Date/15.9.5.7.js')
-rw-r--r--Source/JavaScriptCore/tests/mozilla/ecma_3/Date/15.9.5.7.js211
1 files changed, 211 insertions, 0 deletions
diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/Date/15.9.5.7.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/Date/15.9.5.7.js
new file mode 100644
index 0000000..14b2574
--- /dev/null
+++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/Date/15.9.5.7.js
@@ -0,0 +1,211 @@
+/* The contents of this file are subject to the Netscape Public
+ * License Version 1.1 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.mozilla.org/NPL/
+ *
+ * Software distributed under the License is distributed on an "AS
+ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+ * implied. See the License for the specific language governing
+ * rights and limitations under the License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March
+ * 31, 1998.
+ *
+ * The Initial Developer of the Original Code is Netscape Communications
+ * Corporation. Portions created by Netscape are
+ * Copyright (C) 1998 Netscape Communications Corporation. All
+ * Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ */
+/**
+ 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()
+
+ 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.
+
+ Author: pschwartau@netscape.com
+ Date: 14 november 2000
+ Revised: 07 january 2002 because of a change in JS Date format:
+
+ 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 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);
+
+
+//-----------------------------------------------------------------------------------------------------
+ var testcases = new Array();
+//-----------------------------------------------------------------------------------------------------
+
+
+ // 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);
+
+
+ // 1900
+ addDateTestCase(TIME_1900);
+ addDateTestCase(TIME_1900 - 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);
+
+
+ // 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();
+//-----------------------------------------------------------------------------------------------------
+
+
+function addTestCase()
+{
+ testcases[tc++] = new TestCase( SECTION, status, expect, actual);
+}
+
+
+function addDateTestCase(date_given_in_milliseconds)
+{
+ givenDate = new Date(date_given_in_milliseconds);
+
+ status = '(' + givenDate + ').toLocaleTimeString()';
+ actual = givenDate.toLocaleTimeString();
+ expect = extractLocaleTimeString(givenDate);
+ 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);
+}