tor-browser

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

map-has-nongcthing.js (2046B)


      1 // Return a new map, possibly filling some dummy entries to enforce creating
      2 // multiple hash buckets.
      3 function createMap(values, n) {
      4  var xs = [...values];
      5  for (var i = 0; i < n; ++i) {
      6    xs.push({});
      7  }
      8  return new Map(xs.map((x, i) => [x, i]));
      9 }
     10 
     11 function runTest(fn) {
     12  fn(0);
     13  fn(100);
     14 }
     15 
     16 function testInt32(n) {
     17  var xs = [1, 2];
     18  var ys = [3, 4];
     19  var zs = [...xs, ...ys];
     20  var map = createMap(xs, n);
     21 
     22  var N = 100;
     23  var c = 0;
     24  for (var i = 0; i < N; ++i) {
     25    var z = zs[i & 3];
     26    if (map.has(z)) c++;
     27  }
     28  assertEq(c, N / 2);
     29 }
     30 runTest(testInt32);
     31 
     32 function testDouble(n) {
     33  var xs = [Math.PI, Infinity];
     34  var ys = [Math.E, -Infinity];
     35  var zs = [...xs, ...ys];
     36  var map = createMap(xs, n);
     37 
     38  var N = 100;
     39  var c = 0;
     40  for (var i = 0; i < N; ++i) {
     41    var z = zs[i & 3];
     42    if (map.has(z)) c++;
     43  }
     44  assertEq(c, N / 2);
     45 }
     46 runTest(testDouble);
     47 
     48 function testZero(n) {
     49  var xs = [0, -0];
     50  var ys = [1, -1];
     51  var zs = [...xs, ...ys];
     52  var map = createMap([0], n);
     53 
     54  var N = 100;
     55  var c = 0;
     56  for (var i = 0; i < N; ++i) {
     57    var z = zs[i & 3];
     58    if (map.has(z)) c++;
     59  }
     60  assertEq(c, N / 2);
     61 }
     62 runTest(testZero);
     63 
     64 function testNaN(n) {
     65  var xs = [NaN, -NaN];
     66  var ys = [1, -1];
     67  var zs = [...xs, ...ys];
     68  var map = createMap([NaN], n);
     69 
     70  var N = 100;
     71  var c = 0;
     72  for (var i = 0; i < N; ++i) {
     73    var z = zs[i & 3];
     74    if (map.has(z)) c++;
     75  }
     76  assertEq(c, N / 2);
     77 }
     78 runTest(testNaN);
     79 
     80 function testUndefinedAndNull(n) {
     81  var xs = [undefined, null];
     82  var ys = [1, -1];
     83  var zs = [...xs, ...ys];
     84  var map = createMap(xs, n);
     85 
     86  var N = 100;
     87  var c = 0;
     88  for (var i = 0; i < N; ++i) {
     89    var z = zs[i & 3];
     90    if (map.has(z)) c++;
     91  }
     92  assertEq(c, N / 2);
     93 }
     94 runTest(testUndefinedAndNull);
     95 
     96 function testBoolean(n) {
     97  var xs = [true, false];
     98  var ys = [1, -1];
     99  var zs = [...xs, ...ys];
    100  var map = createMap(xs, n);
    101 
    102  var N = 100;
    103  var c = 0;
    104  for (var i = 0; i < N; ++i) {
    105    var z = zs[i & 3];
    106    if (map.has(z)) c++;
    107  }
    108  assertEq(c, N / 2);
    109 }
    110 runTest(testBoolean);