|
@@ -1,3 +1,9 @@
|
|
|
|
+function registerInDifferentScope(registry) {
|
|
|
|
+ const target = {};
|
|
|
|
+ registry.register(target, {});
|
|
|
|
+ eval("");
|
|
|
|
+}
|
|
|
|
+
|
|
test("basic functionality", () => {
|
|
test("basic functionality", () => {
|
|
expect(WeakMap.prototype.set).toHaveLength(2);
|
|
expect(WeakMap.prototype.set).toHaveLength(2);
|
|
|
|
|
|
@@ -21,25 +27,26 @@ test("invalid values", () => {
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
|
|
|
|
+function setObjectKey(weakMap) {
|
|
|
|
+ expect(weakMap.set({ e: 3 }, 1)).toBe(weakMap);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function setSymbolKey(weakMap) {
|
|
|
|
+ expect(weakMap.set(Symbol("foo"), "bar")).toBe(weakMap);
|
|
|
|
+}
|
|
|
|
+
|
|
test("automatic removal of garbage-collected values", () => {
|
|
test("automatic removal of garbage-collected values", () => {
|
|
const weakMap = new WeakMap();
|
|
const weakMap = new WeakMap();
|
|
- const objectKey = { e: 3 };
|
|
|
|
|
|
|
|
- expect(weakMap.set(objectKey, 1)).toBe(weakMap);
|
|
|
|
|
|
+ setObjectKey(weakMap);
|
|
expect(getWeakMapSize(weakMap)).toBe(1);
|
|
expect(getWeakMapSize(weakMap)).toBe(1);
|
|
|
|
|
|
- markAsGarbage("objectKey");
|
|
|
|
gc();
|
|
gc();
|
|
-
|
|
|
|
expect(getWeakMapSize(weakMap)).toBe(0);
|
|
expect(getWeakMapSize(weakMap)).toBe(0);
|
|
|
|
|
|
- const symbolKey = Symbol("foo");
|
|
|
|
-
|
|
|
|
- expect(weakMap.set(symbolKey, "bar")).toBe(weakMap);
|
|
|
|
|
|
+ setSymbolKey(weakMap);
|
|
expect(getWeakMapSize(weakMap)).toBe(1);
|
|
expect(getWeakMapSize(weakMap)).toBe(1);
|
|
|
|
|
|
- markAsGarbage("symbolKey");
|
|
|
|
gc();
|
|
gc();
|
|
-
|
|
|
|
expect(getWeakMapSize(weakMap)).toBe(0);
|
|
expect(getWeakMapSize(weakMap)).toBe(0);
|
|
});
|
|
});
|