map-has-symbol.js (599B)
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 test(n) { 17 var xs = [Symbol(), Symbol()]; 18 var ys = [Symbol(), Symbol()]; 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(test);