1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/jit-test/tests/ion/doubleComparisons.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,88 @@ 1.4 + 1.5 +function gen_f(x) { 1.6 + var f = "{\n" + 1.7 + " var x = " + x + ";\n" + 1.8 + " if (x)\n" + 1.9 + " return true;\n" + 1.10 + " return false;\n" + 1.11 + "}"; 1.12 + return new Function(f); 1.13 +} 1.14 + 1.15 +function run_f(x) { 1.16 + return gen_f(x)(); 1.17 +} 1.18 + 1.19 +function gen_k(x, op, y) { 1.20 + var f = "{\n" + 1.21 + " var x = " + x + ";\n" + 1.22 + " var y = " + y + ";\n" + 1.23 + " if (x " + op + " y)\n" + 1.24 + " return true;\n" + 1.25 + " return false;\n" + 1.26 + "}"; 1.27 + return new Function(f); 1.28 +} 1.29 + 1.30 +function run_k(x, op, y) { 1.31 + return gen_k(x, op, y)(); 1.32 +} 1.33 + 1.34 +function gen_r(x, op, y) { 1.35 + var f = "{\n" + 1.36 + " var x = " + x + ";\n" + 1.37 + " var y = " + y + ";\n" + 1.38 + " return x " + op + " y;\n" + 1.39 + "}"; 1.40 + return new Function(f); 1.41 +} 1.42 + 1.43 +function run_r(x, op, y) { 1.44 + return gen_r(x, op, y)(); 1.45 +} 1.46 + 1.47 +assertEq(run_f("1 / 0"), true); 1.48 +assertEq(run_f("0 / 0"), false); 1.49 +assertEq(run_f("-0"), false); 1.50 +assertEq(run_f(1.3), true); 1.51 + 1.52 +// Ordered results. 1.53 +assertEq(run_k(1.3, ">", 2.3), false); 1.54 +assertEq(run_k(2.3, ">", 2.3), false); 1.55 +assertEq(run_k(2.4, ">", 2.3), true); 1.56 +assertEq(run_k(1.3, ">=", 2.3), false); 1.57 +assertEq(run_k(2.3, ">=", 2.3), true); 1.58 +assertEq(run_k(2.4, ">=", 2.3), true); 1.59 +assertEq(run_k(1.3, "<", 2.3), true); 1.60 +assertEq(run_k(2.3, "<", 2.3), false); 1.61 +assertEq(run_k(2.4, "<", 2.3), false); 1.62 +assertEq(run_k(1.3, "<", 2.3), true); 1.63 +assertEq(run_k(2.3, "<=", 2.3), true); 1.64 +assertEq(run_k(2.4, "<", 2.3), false); 1.65 + 1.66 +// Unordered results. 1.67 +assertEq(run_k("NaN", "<", 2.5), false); 1.68 +assertEq(run_k("NaN", "<=", 2.5), false); 1.69 +assertEq(run_k("NaN", ">", 2.5), false); 1.70 +assertEq(run_k("NaN", ">=", 2.5), false); 1.71 + 1.72 +// Ordered results. 1.73 +assertEq(run_r(1.3, ">", 2.3), false); 1.74 +assertEq(run_r(2.3, ">", 2.3), false); 1.75 +assertEq(run_r(2.4, ">", 2.3), true); 1.76 +assertEq(run_r(1.3, ">=", 2.3), false); 1.77 +assertEq(run_r(2.3, ">=", 2.3), true); 1.78 +assertEq(run_r(2.4, ">=", 2.3), true); 1.79 +assertEq(run_r(1.3, "<", 2.3), true); 1.80 +assertEq(run_r(2.3, "<", 2.3), false); 1.81 +assertEq(run_r(2.4, "<", 2.3), false); 1.82 +assertEq(run_r(1.3, "<", 2.3), true); 1.83 +assertEq(run_r(2.3, "<=", 2.3), true); 1.84 +assertEq(run_r(2.4, "<", 2.3), false); 1.85 + 1.86 +// Unordered results. 1.87 +assertEq(run_r("NaN", "<", 2.5), false); 1.88 +assertEq(run_r("NaN", "<=", 2.5), false); 1.89 +assertEq(run_r("NaN", ">", 2.5), false); 1.90 +assertEq(run_r("NaN", ">=", 2.5), false); 1.91 +