refactor(common): 重构 Conn 实体并优化地图进入逻辑
- 优化 Conn 实体的 SendPack 方法,提高代码复用性 - 添加 goja 模块到 go.work 文件 - 重构地图进入逻辑,增加玩家广播和刷怪功能 - 调整 OutInfo 结构中的 Vip 和 Viped 字段类型 - 简化 MonsterRefresh 结构体定义
This commit is contained in:
76
common/utils/goja/builtin_weakmap_test.go
Normal file
76
common/utils/goja/builtin_weakmap_test.go
Normal file
@@ -0,0 +1,76 @@
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user