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 + })();