|
1 var key = {}; |
|
2 var wm = WeakMap(); |
|
3 |
|
4 assertEq(wm.has(key), false); |
|
5 // Clearing an already empty WeakMap |
|
6 wm.clear(); |
|
7 assertEq(wm.has(key), false); |
|
8 |
|
9 // Clearing a WeakMap with a live key |
|
10 wm.set(key, 42); |
|
11 assertEq(wm.has(key), true); |
|
12 wm.clear(); |
|
13 assertEq(wm.has(key), false); |
|
14 |
|
15 // Clearing a WeakMap with keys turned to garbage |
|
16 wm.set(key, {}); |
|
17 for (var i = 0; i < 10; i++) |
|
18 wm.set({}, {}); |
|
19 assertEq(wm.has(key), true); |
|
20 wm.clear(); |
|
21 assertEq(wm.has(key), false); |
|
22 |
|
23 // Clearing a WeakMap with keys turned to garbage and after doing a GC |
|
24 wm.set(key, {}); |
|
25 for (var i = 0; i < 10; i++) |
|
26 wm.set({}, {}); |
|
27 assertEq(wm.has(key), true); |
|
28 gc(); |
|
29 assertEq(wm.has(key), true); |
|
30 wm.clear(); |
|
31 assertEq(wm.has(key), false); |
|
32 |
|
33 // More testing when the key is no longer live |
|
34 wm.set(key, {}); |
|
35 key = null; |
|
36 wm.clear(); |
|
37 gc(); |
|
38 var key2 = {}; |
|
39 wm.set(key2, {}); |
|
40 key2 = null; |
|
41 gc(); |
|
42 wm.clear(); |