tor-browser

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

truthies.js (1135B)


      1 load(libdir + 'andTestHelper.js');
      2 load(libdir + 'orTestHelper.js');
      3 
      4 function source(x) {
      5  switch (typeof x) {
      6    case "number":
      7    case "boolean":
      8      return String(x);
      9    case "undefined":
     10      return "(void 0)";
     11    case "string":
     12      return JSON.stringify(x);
     13    case "object":
     14      if (x === null) {
     15        return "null";
     16      }
     17      return `(${JSON.stringify(x)})`;
     18    default:
     19      throw new Error("not implemented: " + typeof x);
     20  }
     21 }
     22 
     23 (function () {
     24   var opsies   = ["||", "&&"];
     25   var falsies  = [null, undefined, false, NaN, 0, ""];
     26   var truthies = [{}, true, 1, 42, 1/0, -1/0, "blah"];
     27   var boolies  = [falsies, truthies];
     28 
     29   for (var op of opsies) {
     30     for (var i in boolies) {
     31       for (var j in boolies[i]) {
     32  var x = source(boolies[i][j]);
     33  for (var k in boolies) {
     34    for (var l in boolies[k]) {
     35      var y = source(boolies[k][l]);
     36      var prefix = (op == "||") ? "or" : "and";
     37      var f = new Function("return " + prefix + "TestHelper(" + x + "," + y + ",10)");
     38      var expected = eval(x + op + y) ? 45 : 0;
     39      assertEq(f(), expected);
     40    }
     41  }
     42       }
     43     }
     44   }
     45 })();