js/src/jit-test/tests/basic/truthies.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/js/src/jit-test/tests/basic/truthies.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,29 @@
     1.4 +load(libdir + 'andTestHelper.js');
     1.5 +load(libdir + 'orTestHelper.js');
     1.6 +
     1.7 +(function () {
     1.8 +   var opsies   = ["||", "&&"];
     1.9 +   var falsies  = [null, undefined, false, NaN, 0, ""];
    1.10 +   var truthies = [{}, true, 1, 42, 1/0, -1/0, "blah"];
    1.11 +   var boolies  = [falsies, truthies];
    1.12 +
    1.13 +   // The for each here should abort tracing, so that this test framework
    1.14 +   // relies only on the interpreter while the orTestHelper and andTestHelper
    1.15 +   //  functions get trace-JITed.
    1.16 +   for each (var op in opsies) {
    1.17 +     for (var i in boolies) {
    1.18 +       for (var j in boolies[i]) {
    1.19 +	 var x = uneval(boolies[i][j]);
    1.20 +	 for (var k in boolies) {
    1.21 +	   for (var l in boolies[k]) {
    1.22 +	     var y = uneval(boolies[k][l]);
    1.23 +	     var prefix = (op == "||") ? "or" : "and";
    1.24 +	     var f = new Function("return " + prefix + "TestHelper(" + x + "," + y + ",10)");
    1.25 +	     var expected = eval(x + op + y) ? 45 : 0;
    1.26 +	     assertEq(f(), expected);
    1.27 +	   }
    1.28 +	 }
    1.29 +       }
    1.30 +     }
    1.31 +   }
    1.32 + })();

mercurial