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);