testBug504520Harder.js (1324B)
1 function testBug504520Harder() { 2 // test 1024 similar cases 3 var vals = [1/0, -1/0, 0, 0/0]; 4 var ops = ["===", "!==", "==", "!=", "<", ">", "<=", ">="]; 5 for (var x of vals) { 6 for (var y of vals) { 7 for (var op of ops) { 8 for (var z of vals) { 9 // Assume eval is correct. This depends on the global 10 // Infinity property not having been reassigned. 11 var xz = eval(x + op + z); 12 var yz = eval(y + op + z); 13 14 var arr = [x, x, x, x, x, x, x, x, x, y]; 15 assertEq(arr.length > 9, true); 16 var expected = [xz, xz, xz, xz, xz, xz, xz, xz, xz, yz]; 17 18 // ?: looks superfluous but that's what we're testing here 19 var fun = eval( 20 '(function (arr, results) {\n' + 21 ' for (let i = 0; i < arr.length; i++)\n' + 22 ' results.push(arr[i]' + op + z + ' ? "true" : "false");\n' + 23 '});\n'); 24 var actual = []; 25 fun(arr, actual); 26 print(x, y, op, z); 27 assertEq("" + actual, "" + expected); 28 } 29 } 30 } 31 } 32 } 33 testBug504520Harder();