blob: d787972af937d0bafdace53d2c1abee13268c0c1 [file] [log] [blame]
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
// 1. Verifying parsing with date string in GMT format.
var datestring = "Sat, 12 Aug 1995 13:30:00GMT";
WScript.Echo(Date.parse(datestring));
// 2. Verifying parse date with timezone given in paranthesis.
// This parses the date to local timezone and not the timezone given in paranthesis.
datestring = "Sat, 12 Aug 1995 13:30:00 ( GMT )";
// Covers the code for space and ( )s int the parser.
WScript.Echo(Date.parse(datestring));
// 3. Verifying parse date with invalid timezone.
// This should cover the error condition.
datestring = "Sat, 12 Aug 1995 13:30:00NX-01";
var actualResult = Date.parse(datestring);
WScript.Echo(actualResult);
// 4. Verifying parse date with timezone.
datestring = "Sat, 12 Aug 1995 13:00:00 z";
WScript.Echo(Date.parse(datestring));
// 5. Verifying conversion behaviors
var toStrings;
var valueOfs;
var toStringCalled;
var valueOfCalled;
toStrings =
[
{},
function ()
{
toStringCalled = true;
return {};
},
function ()
{
toStringCalled = true;
return undefined;
},
function ()
{
toStringCalled = true;
return "1/1/1970 12:00 am";
}
];
valueOfs =
[
{},
function ()
{
valueOfCalled = true;
return {};
},
function ()
{
valueOfCalled = true;
return undefined;
},
function ()
{
valueOfCalled = true;
return "1/1/1970 1:00 am";
},
function ()
{
valueOfCalled = true;
return "84";
}
];
for (var ts in toStrings)
{
for (var vo in valueOfs)
{
toStringCalled = false;
valueOfCalled = false;
var obj = { toString: toStrings[ts], valueOf: valueOfs[vo] };
try
{
WScript.Echo(Date.parse(obj));
}
catch (ex)
{
WScript.Echo("Got error:");
WScript.Echo(" name: " + ex.name);
WScript.Echo(" message: " + ex.message);
}
WScript.Echo("toString called: " + (toStringCalled ? "yes" : "no"));
WScript.Echo("valueOf called: " + (valueOfCalled ? "yes" : "no"));
}
}
// Verifying different precisions for the milliseconds
// No milliseconds
WScript.Echo(Date.parse("2011-11-08T19:48:43"));
// Missing digits after .
WScript.Echo(Date.parse("2011-11-08T19:48:43."));
// milliseconds, 1 digit only, treat it as hundreds
WScript.Echo(Date.parse("2011-11-08T19:48:43.1"));
WScript.Echo(Date.parse("2011-11-08T19:48:43.1a"));
WScript.Echo(Date.parse("2011-11-08T19:48:43.0"));
WScript.Echo(Date.parse("2011-11-08T19:48:43.0a"));
// milliseconds, 2 digit only, treat it as tens
WScript.Echo(Date.parse("2011-11-08T19:48:43.12"));
WScript.Echo(Date.parse("2011-11-08T19:48:43.12a"));
WScript.Echo(Date.parse("2011-11-08T19:48:43.01"));
WScript.Echo(Date.parse("2011-11-08T19:48:43.01a"));
WScript.Echo(Date.parse("2011-11-08T19:48:43.00"));
WScript.Echo(Date.parse("2011-11-08T19:48:43.00a"));
// milliseconds, canonical 3 digit, per EcmaScript spec
WScript.Echo(Date.parse("2011-11-08T19:48:43.123"));
WScript.Echo(Date.parse("2011-11-08T19:48:43.123a"));
WScript.Echo(Date.parse("2011-11-08T19:48:43.001"));
WScript.Echo(Date.parse("2011-11-08T19:48:43.001a"));
WScript.Echo(Date.parse("2011-11-08T19:48:43.000"));
WScript.Echo(Date.parse("2011-11-08T19:48:43.000a"));
// milliseconds, with more than 3 digits, ignore all digits after the third
WScript.Echo(Date.parse("2011-11-08T19:48:43.1234"));
WScript.Echo(Date.parse("2011-11-08T19:48:43.1234a"));
WScript.Echo(Date.parse("2011-11-08T19:48:43.0011"));
WScript.Echo(Date.parse("2011-11-08T19:48:43.0011a"));
WScript.Echo(Date.parse("2011-11-08T19:48:43.0001"));
WScript.Echo(Date.parse("2011-11-08T19:48:43.0001a"));
WScript.Echo(Date.parse("2011-11-08T19:48:43.0000"));
WScript.Echo(Date.parse("2011-11-08T19:48:43.0000a"));
WScript.Echo(Date.parse("2011-11-08T19:48:43.12345"));
WScript.Echo(Date.parse("2011-11-08T19:48:43.12345a"))
WScript.Echo(Date.parse("2011-11-08T19:48:43.00111"));;
WScript.Echo(Date.parse("2011-11-08T19:48:43.00111a"));;
WScript.Echo(Date.parse("2011-11-08T19:48:43.00001"));
WScript.Echo(Date.parse("2011-11-08T19:48:43.00001a"));
WScript.Echo(Date.parse("2011-11-08T19:48:43.00000"));
WScript.Echo(Date.parse("2011-11-08T19:48:43.00000a"));
WScript.Echo(Date.parse("2011-11-08T19:48:43.00000000000001"));
WScript.Echo(Date.parse("2011-11-08T19:48:43.00000000000001a"));
// Verifying non-standard delimiters
// Some delimiters are allowed to be compatible with other browsers
WScript.Echo(Date.parse("2011-11-08/19:48:43"));
WScript.Echo(Date.parse("2011-11-08:19:48:43"));
WScript.Echo(Date.parse("2011-11-08 19:48:43"));
WScript.Echo(Date.parse("2011-11-08/: 19:48:43"));
WScript.Echo(Date.parse("2011/11/08/19:48:43"));
WScript.Echo(Date.parse("2011/11/08:19:48:43"));
WScript.Echo(Date.parse("2011/11/08 19:48:43"));
WScript.Echo(Date.parse("2011/11/08/: 19:48:43"));
// Mixed delimiters in the date are allowed
WScript.Echo(Date.parse("2011-11/08 19:48:43"));
WScript.Echo(Date.parse("2011/11-08 19:48:43"));
// Multiple 'T's aren't allowed
WScript.Echo(Date.parse("2011-11-08TT19:48:43"));