tor-browser

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

set-has-value.js (660B)


      1 // Return a new set, possibly filling some dummy entries to enforce creating
      2 // multiple hash buckets.
      3 function createSet(values, n) {
      4  var xs = [...values];
      5  for (var i = 0; i < n; ++i) {
      6    xs.push({});
      7  }
      8  return new Set(xs);
      9 }
     10 
     11 function runTest(fn) {
     12  fn(0);
     13  fn(100);
     14 }
     15 
     16 function testPolymorphic(n) {
     17  var xs = [10, 10.5, "test", Symbol("?"), 123n, -123n, {}, []];
     18  var ys = [-0, NaN, "bad", Symbol("!"), 42n, -99n, {}, []];
     19  var zs = [...xs, ...ys];
     20  var set = createSet(xs, n);
     21 
     22  var N = 128;
     23  var c = 0;
     24  for (var i = 0; i < N; ++i) {
     25    var z = zs[i & 15];
     26    if (set.has(z)) c++;
     27  }
     28  assertEq(c, N / 2);
     29 }
     30 runTest(testPolymorphic);