Set-iterator-remove-4.js (770B)
1 // Multiple live iterators on the same Set can cope with removing entries. 2 3 load(libdir + "iteration.js"); 4 5 // Make a set. 6 var set = new Set(); 7 var SIZE = 7; 8 for (var j = 0; j < SIZE; j++) 9 set.add(j); 10 11 // Make lots of iterators pointing to entry 2 of the set. 12 var NITERS = 5; 13 var iters = []; 14 for (var i = 0; i < NITERS; i++) { 15 var iter = set[Symbol.iterator](); 16 assertIteratorNext(iter, 0); 17 assertIteratorNext(iter, 1); 18 iters[i] = iter; 19 } 20 21 // Remove half of the set entries. 22 for (var j = 0; j < SIZE; j += 2) 23 set.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); 30 assertIteratorDone(iter, undefined); 31 }