summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/collections/Set-iterator-remove-1.js
blob: 31ac12f1ac2f8be16a039b091705fe4dd41f4864 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// A set iterator can cope with removing the current entry.

function test(letters, toRemove) {
    var set = new Set(letters);
    toRemove = new Set(toRemove);

    var leftovers = [...set].filter(x => !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 = [...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