date-parse-test.html   [plain text]


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>

<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>test of JavaScript date parsing</title>
</head>

<body>

<script type="text/javascript">

// --------

// Helper functions.

function call(functionName, parameter)
{
    try {
        result = eval(functionName + "(parameter)");
    } catch (e) {
        result = "exception";
    }
    return result;
}

// --------

// Run tests.

var failureCount = 0;

function test(functionName, parameter, desiredResult)
{
    var result = call(functionName, parameter);
    if (result != desiredResult && !(isNaN(result) && isNaN(desiredResult))) {
        var s = "called " + functionName + " on " + parameter + " and got " + result + " instead of " + desiredResult;
        document.writeln("<p>" + s + "</p>");
        failureCount += 1;
        return 0;
    }
    return 1;
}

function testDateParse(date, numericResult)
{
    if (test("Date.parse", date, numericResult)) {
        test("Date.parse", date.toUpperCase(), numericResult);
        test("Date.parse", date.toLowerCase(), numericResult);
    }
}

var o = Date.parse(" Dec 25 1995 1:30 ") - Date.parse(" Dec 25 1995 1:30 GMT ");

testDateParse("Dec 25 1995 GMT", 819849600000);
testDateParse("Dec 25 1995", 819878400000);

testDateParse("Dec 25 1995 1:30 GMT", 819855000000);
testDateParse("Dec 25 1995 1:30", 819855000000 + o);
testDateParse("Dec 25 1995 1:30 ", 819855000000 + o);
testDateParse("Dec 25 1995 1:30 AM GMT", 819855000000);
testDateParse("Dec 25 1995 1:30 AM", 819855000000 + o);
testDateParse("Dec 25 1995 1:30AM", 819855000000 + o);
testDateParse("Dec 25 1995 1:30 AM ", 819855000000 + o);

testDateParse("Dec 25 1995 13:30 GMT", 819898200000);
testDateParse("Dec 25 1995 13:30", 819898200000 + o);
testDateParse("Dec 25 1995 13:30 ", 819898200000 + o);
testDateParse("Dec 25 1995 1:30 PM GMT", 819898200000);
testDateParse("Dec 25 1995 1:30 PM", 819898200000 + o);
testDateParse("Dec 25 1995 1:30PM", 819898200000 + o);
testDateParse("Dec 25 1995 1:30 PM ", 819898200000 + o);

testDateParse("Dec 25 1995 UTC", 819849600000);
testDateParse("Dec 25 1995 UT", 819849600000);
testDateParse("Dec 25 1995 PST", 819878400000);
testDateParse("Dec 25 1995 PDT", 819874800000);

testDateParse("Dec 25 1995 1:30 UTC", 819855000000);
testDateParse("Dec 25 1995 1:30 UT", 819855000000);
testDateParse("Dec 25 1995 1:30 PST", 819883800000);
testDateParse("Dec 25 1995 1:30 PDT", 819880200000);

testDateParse("Dec 25 1995 1:30 PM UTC", 819898200000);
testDateParse("Dec 25 1995 1:30 PM UT", 819898200000);
testDateParse("Dec 25 1995 1:30 PM PST", 819927000000);
testDateParse("Dec 25 1995 1:30 PM PDT", 819923400000);

testDateParse("Dec 25 1995 XXX", 819849600000);
testDateParse("Dec 25 1995 1:30 XXX", 819855000000);

testDateParse("Dec 25 1995 1:30 U", 819855000000);
testDateParse("Dec 25 1995 1:30 V", 819855000000);
testDateParse("Dec 25 1995 1:30 W", 819855000000);
testDateParse("Dec 25 1995 1:30 X", 819855000000);

testDateParse("Dec 25 1995 0:30 GMT", 819851400000);
testDateParse("Dec 25 1995 0:30 AM GMT", NaN);
testDateParse("Dec 25 1995 0:30 PM GMT", NaN);
testDateParse("Dec 25 1995 12:30 AM GMT", 819851400000);
testDateParse("Dec 25 1995 12:30 PM GMT", 819894600000);
testDateParse("Dec 25 1995 13:30 AM GMT", NaN);
testDateParse("Dec 25 1995 13:30 PM GMT", NaN);

testDateParse("Anf 25 1995 GMT", NaN);

testDateParse("Wed Dec 25 1995 1:30 GMT", 819855000000);

testDateParse("Dec 25" + String.fromCharCode(9) + "1995 13:30 GMT", 819898200000);
testDateParse("Dec 25" + String.fromCharCode(10) + "1995 13:30 GMT", 819898200000);

// --------

// Summarize.

var failuresMessage;
if (failureCount) {
    failuresMessage = failureCount + " tests failed.";
} else {
    failuresMessage = "No failures.";
}
document.writeln("<p>Testing complete. " + failuresMessage + "</p>");

// --------

</script>

</body>

</html>