js/src/tests/ecma_5/Date/setTime-argument-shortcircuiting.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 // Any copyright is dedicated to the Public Domain.
     2 // http://creativecommons.org/licenses/publicdomain/
     4 //-----------------------------------------------------------------------------
     5 print("Test for correct short-circuiting implementation of Date.set methods");
     7 /**************
     8  * BEGIN TEST *
     9  **************/
    10 var global = 0;
    11 var date;
    13 /* Test that methods don't short circuit argument evaluation. */
    14 date = new Date(0).setSeconds(NaN, {valueOf:function(){global = 3}});
    15 assertEq(global, 3);
    17 date = new Date(0).setUTCSeconds(NaN, {valueOf:function(){global = 4}});
    18 assertEq(global, 4);
    20 date = new Date(0).setMinutes(NaN, {valueOf:function(){global = 5}});
    21 assertEq(global, 5);
    23 date = new Date(0).setUTCMinutes(NaN, {valueOf:function(){global = 6}});
    24 assertEq(global, 6);
    26 date = new Date(0).setHours(NaN, {valueOf:function(){global = 7}});
    27 assertEq(global, 7);
    29 date = new Date(0).setUTCHours(NaN, {valueOf:function(){global = 8}});
    30 assertEq(global, 8);
    32 date = new Date(0).setMonth(NaN, {valueOf:function(){global = 11}});
    33 assertEq(global, 11);
    35 date = new Date(0).setUTCMonth(NaN, {valueOf:function(){global = 12}});
    36 assertEq(global, 12);
    38 date = new Date(0).setFullYear(NaN, {valueOf:function(){global = 13}});
    39 assertEq(global, 13);
    41 date = new Date(0).setUTCFullYear(NaN, {valueOf:function(){global = 14}});
    42 assertEq(global, 14);
    46 /* Test that argument evaluation is not short circuited if Date == NaN */
    47 date = new Date(NaN).setMilliseconds({valueOf:function(){global = 15}});
    48 assertEq(global, 15);
    50 date = new Date(NaN).setUTCMilliseconds({valueOf:function(){global = 16}});
    51 assertEq(global, 16);
    53 date = new Date(NaN).setSeconds({valueOf:function(){global = 17}});
    54 assertEq(global, 17);
    56 date = new Date(NaN).setUTCSeconds({valueOf:function(){global = 18}});
    57 assertEq(global, 18);
    59 date = new Date(NaN).setMinutes({valueOf:function(){global = 19}});
    60 assertEq(global, 19);
    62 date = new Date(NaN).setUTCMinutes({valueOf:function(){global = 20}});
    63 assertEq(global, 20);
    65 date = new Date(NaN).setHours({valueOf:function(){global = 21}});
    66 assertEq(global, 21);
    68 date = new Date(NaN).setUTCHours({valueOf:function(){global = 22}});
    69 assertEq(global, 22);
    71 date = new Date(NaN).setDate({valueOf:function(){global = 23}});
    72 assertEq(global, 23);
    74 date = new Date(NaN).setUTCDate({valueOf:function(){global = 24}});
    75 assertEq(global, 24);
    77 date = new Date(NaN).setMonth({valueOf:function(){global = 25}});
    78 assertEq(global, 25);
    80 date = new Date(NaN).setUTCMonth({valueOf:function(){global = 26}});
    81 assertEq(global, 26);
    83 date = new Date(NaN).setFullYear({valueOf:function(){global = 27}});
    84 assertEq(global, 27);
    86 date = new Date(NaN).setUTCFullYear({valueOf:function(){global = 28}});
    87 assertEq(global, 28);
    90 /* Test the combination of the above two. */
    91 date = new Date(NaN).setSeconds(NaN, {valueOf:function(){global = 31}});
    92 assertEq(global, 31);
    94 date = new Date(NaN).setUTCSeconds(NaN, {valueOf:function(){global = 32}});
    95 assertEq(global, 32);
    97 date = new Date(NaN).setMinutes(NaN, {valueOf:function(){global = 33}});
    98 assertEq(global, 33);
   100 date = new Date(NaN).setUTCMinutes(NaN, {valueOf:function(){global = 34}});
   101 assertEq(global, 34);
   103 date = new Date(NaN).setHours(NaN, {valueOf:function(){global = 35}});
   104 assertEq(global, 35);
   106 date = new Date(NaN).setUTCHours(NaN, {valueOf:function(){global = 36}});
   107 assertEq(global, 36);
   109 date = new Date(NaN).setMonth(NaN, {valueOf:function(){global = 39}});
   110 assertEq(global, 39);
   112 date = new Date(NaN).setUTCMonth(NaN, {valueOf:function(){global = 40}});
   113 assertEq(global, 40);
   115 date = new Date(NaN).setFullYear(NaN, {valueOf:function(){global = 41}});
   116 assertEq(global, 41);
   118 date = new Date(NaN).setUTCFullYear(NaN, {valueOf:function(){global = 42}});
   119 assertEq(global, 42);
   122 /*Test two methods evaluation*/
   123 var secondGlobal = 0;
   125 date = new Date(NaN).setFullYear({valueOf:function(){global = 43}}, {valueOf:function(){secondGlobal = 1}});
   126 assertEq(global, 43);
   127 assertEq(secondGlobal, 1);
   129 date = new Date(0).setFullYear(NaN, {valueOf:function(){global = 44}}, {valueOf:function(){secondGlobal = 2}});
   130 assertEq(global, 44);
   131 assertEq(secondGlobal, 2);
   134 /* Test year methods*/
   135 date = new Date(0).setYear({valueOf:function(){global = 45}});
   136 assertEq(global, 45);
   138 date = new Date(NaN).setYear({valueOf:function(){global = 46}});
   139 assertEq(global, 46);
   142 /******************************************************************************/
   144 if (typeof reportCompare === "function")
   145   reportCompare(true, true);
   147 print("Tests complete");

mercurial