diff -r 000000000000 -r 6474c204b198 js/src/jit-test/tests/collections/Set-iterator-remove-1.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/js/src/jit-test/tests/collections/Set-iterator-remove-1.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,26 @@ +// A set iterator can cope with removing the current entry. + +function test(letters, toRemove) { + var set = Set(letters); + toRemove = Set(toRemove); + + var leftovers = [x for (x of set) if (!toRemove.has(x))].join(""); + + var log = ""; + for (let x of set) { + log += x; + if (toRemove.has(x)) + set.delete(x); + } + assertEq(log, letters); + + var remaining = [x for (x of set)].join(""); + assertEq(remaining, leftovers); +} + +test('a', 'a'); // removing the only entry +test('abc', 'a'); // removing the first entry +test('abc', 'b'); // removing a middle entry +test('abc', 'c'); // removing the last entry +test('abc', 'abc') // removing all entries +