| // Multiple live iterators on the same Map can cope with removing entries. |
| |
| load(libdir + "iteration.js"); |
| |
| // Make a map. |
| var map = new Map(); |
| var SIZE = 7; |
| for (var j = 0; j < SIZE; j++) |
| map.set(j, j); |
| |
| // Make lots of iterators pointing to entry 2 of the map. |
| var NITERS = 5; |
| var iters = []; |
| for (var i = 0; i < NITERS; i++) { |
| var iter = map[Symbol.iterator](); |
| assertIteratorNext(iter, [0, 0]); |
| assertIteratorNext(iter, [1, 1]); |
| iters[i] = iter; |
| } |
| |
| // Remove half of the map entries. |
| for (var j = 0; j < SIZE; j += 2) |
| map.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, j]); |
| assertIteratorDone(iter, undefined); |
| } |