Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
michael@0 | 1 | // A set iterator can cope with removing the current entry. |
michael@0 | 2 | |
michael@0 | 3 | function test(letters, toRemove) { |
michael@0 | 4 | var set = Set(letters); |
michael@0 | 5 | toRemove = Set(toRemove); |
michael@0 | 6 | |
michael@0 | 7 | var leftovers = [x for (x of set) if (!toRemove.has(x))].join(""); |
michael@0 | 8 | |
michael@0 | 9 | var log = ""; |
michael@0 | 10 | for (let x of set) { |
michael@0 | 11 | log += x; |
michael@0 | 12 | if (toRemove.has(x)) |
michael@0 | 13 | set.delete(x); |
michael@0 | 14 | } |
michael@0 | 15 | assertEq(log, letters); |
michael@0 | 16 | |
michael@0 | 17 | var remaining = [x for (x of set)].join(""); |
michael@0 | 18 | assertEq(remaining, leftovers); |
michael@0 | 19 | } |
michael@0 | 20 | |
michael@0 | 21 | test('a', 'a'); // removing the only entry |
michael@0 | 22 | test('abc', 'a'); // removing the first entry |
michael@0 | 23 | test('abc', 'b'); // removing a middle entry |
michael@0 | 24 | test('abc', 'c'); // removing the last entry |
michael@0 | 25 | test('abc', 'abc') // removing all entries |
michael@0 | 26 |