12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- package goja
- import (
- "testing"
- )
- func TestWeakMap(t *testing.T) {
- vm := New()
- _, err := vm.RunString(`
- var m = new WeakMap();
- var m1 = new WeakMap();
- var key = {};
- m.set(key, true);
- m1.set(key, false);
- if (!m.has(key)) {
- throw new Error("has");
- }
- if (m.get(key) !== true) {
- throw new Error("value does not match");
- }
- if (!m1.has(key)) {
- throw new Error("has (m1)");
- }
- if (m1.get(key) !== false) {
- throw new Error("m1 value does not match");
- }
- m.delete(key);
- if (m.has(key)) {
- throw new Error("m still has after delete");
- }
- if (!m1.has(key)) {
- throw new Error("m1 does not have after delete from m");
- }
- `)
- if err != nil {
- t.Fatal(err)
- }
- }
- func TestWeakMapGetAdderGetIteratorOrder(t *testing.T) {
- const SCRIPT = `
- let getterCalled = 0;
- class M extends WeakMap {
- get set() {
- getterCalled++;
- return null;
- }
- }
- let getIteratorCalled = 0;
- let iterable = {};
- iterable[Symbol.iterator] = () => {
- getIteratorCalled++
- return {
- next: 1
- };
- }
- let thrown = false;
- try {
- new M(iterable);
- } catch (e) {
- if (e instanceof TypeError) {
- thrown = true;
- } else {
- throw e;
- }
- }
- thrown && getterCalled === 1 && getIteratorCalled === 0;
- `
- testScript(SCRIPT, valueTrue, t)
- }
|