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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
// A map iterator can cope with removing the current entry.
function test(pairs) {
print(uneval(pairs));
var map = new Map(pairs);
var all_keys = '';
var false_keys = '';
for (let [k, v] of map) {
all_keys += k;
if (!v)
false_keys += k;
}
var log = '';
for (let [k, remove] of map) {
log += k;
if (remove)
map.delete(k);
}
assertEq(log, all_keys);
var remaining_keys = [...map].map(([k]) => k).join('');
assertEq(remaining_keys, false_keys);
}
// removing the only entry
test([['a', true]]);
// removing the first entry
test([['a', true], ['b', false], ['c', false]]);
// removing a middle entry
test([['a', false], ['b', true], ['c', false]]);
// removing the last entry
test([['a', false], ['b', false], ['c', true]]);
// removing all entries
test([['a', true], ['b', true], ['c', true]]);
|