123456789101112131415161718192021222324252627282930313233 |
- package goja
- import (
- "runtime"
- "testing"
- )
- func TestWeakMapExpiry(t *testing.T) {
- vm := New()
- _, err := vm.RunString(`
- var m = new WeakMap();
- var key = {};
- m.set(key, true);
- if (!m.has(key)) {
- throw new Error("has");
- }
- if (m.get(key) !== true) {
- throw new Error("value does not match");
- }
- key = undefined;
- `)
- if err != nil {
- t.Fatal(err)
- }
- runtime.GC()
- runtime.GC()
- vm.RunString("true") // this will trigger dead keys removal
- wmo := vm.Get("m").ToObject(vm).self.(*weakMapObject)
- l := len(wmo.m.data)
- if l > 0 {
- t.Fatal("Object has not been removed")
- }
- }
|