| // Multiple live iterators on the same Set can cope with removing entries. |
| |
| load(libdir + "iteration.js"); |
| |
| // Make a set. |
| var set = new Set(); |
| var SIZE = 7; |
| for (var j = 0; j < SIZE; j++) |
| set.add(j); |
| |
| // Make lots of iterators pointing to entry 2 of the set. |
| var NITERS = 5; |
| var iters = []; |
| for (var i = 0; i < NITERS; i++) { |
| var iter = set[Symbol.iterator](); |
| assertIteratorNext(iter, 0); |
| assertIteratorNext(iter, 1); |
| iters[i] = iter; |
| } |
| |
| // Remove half of the set entries. |
| for (var j = 0; j < SIZE; j += 2) |
| set.delete(j); |
| |
| // Make sure all the iterators still work. |
| for (var i = 0; i < NITERS; i++) { |
| var iter = iters[i]; |
| for (var j = 3; j < SIZE; j += 2) |
| assertIteratorNext(iter, j); |
| assertIteratorDone(iter, undefined); |
| } |