WeakSet-delete.js (875B)
1 var ws = new WeakSet; 2 3 // Delete on empty 4 assertEq(ws.delete({}), false); 5 6 // Delete existing 7 var value = {}; 8 ws.add(value); 9 assertEq(ws.has(value), true); 10 assertEq(ws.delete(value), true); 11 assertEq(ws.has(value), false); 12 13 // Delete non-empty 14 for (var i = 0; i < 10; i++) 15 ws.add({}); 16 assertEq(ws.add(value), ws); 17 assertEq(ws.has(value), true); 18 assertEq(ws.delete(value), true); 19 assertEq(ws.has(value), false); 20 assertEq(ws.delete(value), false); 21 assertEq(ws.has(value), false); 22 23 // Delete primitive 24 assertEq(ws.delete(15), false); 25 26 // Delete with cross-compartment WeakSet 27 ws = new (newGlobal().WeakSet); 28 WeakSet.prototype.add.call(ws, value); 29 assertEq(WeakSet.prototype.has.call(ws, value), true); 30 assertEq(WeakSet.prototype.delete.call(ws, value), true); 31 assertEq(WeakSet.prototype.has.call(ws, value), false); 32 assertEq(WeakSet.prototype.delete.call(ws, value), false);