Imported Upstream version 1.0.0
[platform/upstream/js.git] / js / src / jit-test / tests / basic / testBug504520Harder.js
1 function testBug504520Harder() {
2     // test 1024 similar cases
3     var vals = [1/0, -1/0, 0, 0/0];
4     var ops = ["===", "!==", "==", "!=", "<", ">", "<=", ">="];
5     for each (var x in vals) {
6         for each (var y in vals) {
7             for each (var op in ops) {
8                 for each (var z in 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 > RUNLOOP, 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();