Map-iterator-remove-4.js (788B)
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 = new 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[Symbol.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 }