|
1 // Multiple live iterators on the same Map can cope with removing entries. |
|
2 |
|
3 load(libdir + "iteration.js"); |
|
4 |
|
5 // Make a map. |
|
6 var map = Map(); |
|
7 var SIZE = 7; |
|
8 for (var j = 0; j < SIZE; j++) |
|
9 map.set(j, j); |
|
10 |
|
11 // Make lots of iterators pointing to entry 2 of the map. |
|
12 var NITERS = 5; |
|
13 var iters = []; |
|
14 for (var i = 0; i < NITERS; i++) { |
|
15 var iter = map[std_iterator](); |
|
16 assertIteratorNext(iter, [0, 0]); |
|
17 assertIteratorNext(iter, [1, 1]); |
|
18 iters[i] = iter; |
|
19 } |
|
20 |
|
21 // Remove half of the map entries. |
|
22 for (var j = 0; j < SIZE; j += 2) |
|
23 map.delete(j); |
|
24 |
|
25 // Make sure all the iterators still work. |
|
26 for (var i = 0; i < NITERS; i++) { |
|
27 var iter = iters[i]; |
|
28 for (var j = 3; j < SIZE; j += 2) |
|
29 assertIteratorNext(iter, [j, j]); |
|
30 assertIteratorDone(iter, undefined); |
|
31 } |