tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

doubleComparisons.js (2288B)


      1 function gen_f(x) {
      2    var f = "{\n" +
      3     "    var x = " + x + ";\n" + 
      4     "    if (x)\n" +
      5     "        return true;\n" +
      6     "    return false;\n" +
      7     "}";
      8    return new Function(f);
      9 }
     10 
     11 function run_f(x) {
     12    return gen_f(x)();
     13 }
     14 
     15 function gen_k(x, op, y) {
     16    var f = "{\n" +
     17     "    var x = " + x + ";\n" +
     18     "    var y = " + y + ";\n" +
     19     "    if (x " + op + " y)\n" +
     20     "        return true;\n" +
     21     "    return false;\n" +
     22     "}";
     23    return new Function(f);
     24 }
     25 
     26 function run_k(x, op, y) {
     27    return gen_k(x, op, y)();
     28 }
     29 
     30 function gen_r(x, op, y) {
     31    var f = "{\n" +
     32     "    var x = " + x + ";\n" +
     33     "    var y = " + y + ";\n" +
     34     "    return x " + op + " y;\n" +
     35     "}";
     36    return new Function(f);
     37 }
     38 
     39 function run_r(x, op, y) {
     40    return gen_r(x, op, y)();
     41 }
     42 
     43 assertEq(run_f("1 / 0"), true);
     44 assertEq(run_f("0 / 0"), false);
     45 assertEq(run_f("-0"), false);
     46 assertEq(run_f(1.3), true);
     47 
     48 // Ordered results.
     49 assertEq(run_k(1.3, ">", 2.3), false);
     50 assertEq(run_k(2.3, ">", 2.3), false);
     51 assertEq(run_k(2.4, ">", 2.3), true);
     52 assertEq(run_k(1.3, ">=", 2.3), false);
     53 assertEq(run_k(2.3, ">=", 2.3), true);
     54 assertEq(run_k(2.4, ">=", 2.3), true);
     55 assertEq(run_k(1.3, "<", 2.3), true);
     56 assertEq(run_k(2.3, "<", 2.3), false);
     57 assertEq(run_k(2.4, "<", 2.3), false);
     58 assertEq(run_k(1.3, "<", 2.3), true);
     59 assertEq(run_k(2.3, "<=", 2.3), true);
     60 assertEq(run_k(2.4, "<", 2.3), false);
     61 
     62 // Unordered results.
     63 assertEq(run_k("NaN", "<", 2.5), false);
     64 assertEq(run_k("NaN", "<=", 2.5), false);
     65 assertEq(run_k("NaN", ">", 2.5), false);
     66 assertEq(run_k("NaN", ">=", 2.5), false);
     67 
     68 // Ordered results.
     69 assertEq(run_r(1.3, ">", 2.3), false);
     70 assertEq(run_r(2.3, ">", 2.3), false);
     71 assertEq(run_r(2.4, ">", 2.3), true);
     72 assertEq(run_r(1.3, ">=", 2.3), false);
     73 assertEq(run_r(2.3, ">=", 2.3), true);
     74 assertEq(run_r(2.4, ">=", 2.3), true);
     75 assertEq(run_r(1.3, "<", 2.3), true);
     76 assertEq(run_r(2.3, "<", 2.3), false);
     77 assertEq(run_r(2.4, "<", 2.3), false);
     78 assertEq(run_r(1.3, "<", 2.3), true);
     79 assertEq(run_r(2.3, "<=", 2.3), true);
     80 assertEq(run_r(2.4, "<", 2.3), false);
     81 
     82 // Unordered results.
     83 assertEq(run_r("NaN", "<", 2.5), false);
     84 assertEq(run_r("NaN", "<=", 2.5), false);
     85 assertEq(run_r("NaN", ">", 2.5), false);
     86 assertEq(run_r("NaN", ">=", 2.5), false);