| load(libdir + 'andTestHelper.js'); |
| load(libdir + 'orTestHelper.js'); |
| |
| (function () { |
| var opsies = ["||", "&&"]; |
| var falsies = [null, undefined, false, NaN, 0, ""]; |
| var truthies = [{}, true, 1, 42, 1/0, -1/0, "blah"]; |
| var boolies = [falsies, truthies]; |
| |
| // The for each here should abort tracing, so that this test framework |
| // relies only on the interpreter while the orTestHelper and andTestHelper |
| // functions get trace-JITed. |
| for each (var op in opsies) { |
| for (var i in boolies) { |
| for (var j in boolies[i]) { |
| var x = uneval(boolies[i][j]); |
| for (var k in boolies) { |
| for (var l in boolies[k]) { |
| var y = uneval(boolies[k][l]); |
| var prefix = (op == "||") ? "or" : "and"; |
| var f = new Function("return " + prefix + "TestHelper(" + x + "," + y + ",10)"); |
| var expected = eval(x + op + y) ? 45 : 0; |
| assertEq(f(), expected); |
| } |
| } |
| } |
| } |
| } |
| })(); |