michael@0: // Removing many Set entries does not cause a live iterator to skip any of the michael@0: // entries that were not removed. (Compacting a Set must not be observable to michael@0: // script.) michael@0: michael@0: load(libdir + "iteration.js"); michael@0: michael@0: var set = Set(); michael@0: for (var i = 0; i < 32; i++) michael@0: set.add(i); michael@0: var iter = set[std_iterator](); michael@0: assertIteratorNext(iter, 0); michael@0: for (var i = 0; i < 30; i++) michael@0: set.delete(i); michael@0: assertEq(set.size, 2); michael@0: for (var i = 32; i < 100; i++) michael@0: set.add(i); // eventually triggers compaction michael@0: michael@0: for (var i = 30; i < 100; i++) michael@0: assertIteratorNext(iter, i); michael@0: assertIteratorDone(iter, undefined);