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