| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- //-------------------------------------------------------------------------------------------------------
- // Copyright (C) Microsoft. All rights reserved.
- // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- //-------------------------------------------------------------------------------------------------------
- // NOTE: because vdates are timezone specific, this test will might only work in PST
- // not sure about DST. If you see a failure, that would be my first suspicion
- var date = new Date(0);
- var vdate = date.getVarDate();
- // Test string concat both ways:
- writeLine("Attempt string concat (string + vdate) and echo.");
- var appendMe = "test concat: " + vdate;
- writeLine(appendMe);
- writeLine("Attempt string concat (vdate + string) and echo.");
- var appendMe = vdate + ": test concat2";
- writeLine(appendMe);
- // Test typeof
- writeLine(typeof(date));
- writeLine(typeof(vdate));
- writeLine(typeof(new Object(vdate)));
- writeLine(typeof(Object(vdate)));
- // Test .toString (should fail)
- try {
- var myVar = vdate.toString();
- writeLine("FAIL: we should have errored on .toString();");
- } catch (e)
- {
- writeLine("SUCCESS: vdate.toString() failed with error #" + e.number);
- }
- // Test assigning to a member
- try {
- vdate.aMember = 3;
- writeLine("FAIL: we should have errored on vdate.aMember = 3;");
- } catch (e)
- {
- writeLine("SUCCESS: vdate.aMember = 3 failed with error #" + e.number);
- }
- // Test assigning to a member with []
- try {
- vdate["aMember"] = 3;
- writeLine("FAIL: we should have errored on vdate[\"aMember\"] = 3;");
- } catch (e)
- {
- writeLine("SUCCESS: vdate[\"aMember\"] = 3 failed with error #" + e.number);
- }
- // Test accessing a member
- try {
- var shouldNotWork = vdate.aMember;
- } catch (e)
- {
- writeLine("SUCCESS: var shouldNotWork = date.aMember failed with error #" + e.number);
- }
- // Try some more unusual or invalid uses of VarDate
- writeLine("");
- writeLine("Unusual cases:");
- vdate = new Date(1234567890123).getVarDate();
- safeCall(function() { writeLine(vdate ? true : false); });
- safeCall(function() { writeLine([1, 2].indexOf(2, vdate)); }); // valid only in version 3
- safeCall(function() { writeLine(parseInt("1", vdate)); });
- // normalize Old GetNumberFormatEx exception
- safeCall(function() {
- var result = [1, vdate, 2].toLocaleString();
- if (result == "1, [object Object], 2") {
- result = "1.00, [object Object], 2.00";
- }
- writeLine(result);
- });
- // Try some random dates to make sure we match the old engine
- writeLine("");
- writeLine("Pseudorandom cases:");
- for (var i = 0; i < 1000; i++)
- {
- var testDate = new Date(i*10373);
- var testVDate = testDate.getVarDate();
- writeLine("VT_DATE: '" + testVDate + "'");
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // Helpers
- function writeLine(str)
- {
- if (typeof str === "string") {
- str = str.replace(/\(PDT\)/g, "(Pacific Daylight Time)")
- .replace(/\(PST\)/g, "(Pacific Standard Time)");
- }
- WScript.Echo("" + str);
- }
- function safeCall(func)
- {
- try
- {
- return func();
- }
- catch (ex)
- {
- writeLine(ex.name + " (" + ex.number + "): " + ex.message);
- }
- }
|