package jscriptx_test import ( "testing" "git.fsdpf.net/go/jscriptx" ) // 各个测试文件共用的脚手架。放一起是因为它们被十几个文件依赖—— // 原来住在 script_test.go 里,那个名字暗示「测 Script」,找不到。 // newEngine 造一个测试用引擎,默认不打日志(避免测试输出被 console 刷屏)。 func newEngine(t *testing.T, opts ...jscriptx.Option) *jscriptx.Engine { t.Helper() opts = append([]jscriptx.Option{jscriptx.WithLogger(nil)}, opts...) e, err := jscriptx.New(opts...) if err != nil { t.Fatalf("New 失败: %v", err) } t.Cleanup(e.Close) return e } func mustCompile(t *testing.T, e *jscriptx.Engine, name, src string) *jscriptx.Script { t.Helper() s, err := e.Compile(name, src) if err != nil { t.Fatalf("编译 %s 失败: %v", name, err) } return s } // toNumber 把脚本返回的数字统一成 float64:goja 会按数值是否为整数 // 导出成 int64 或 float64,测试里不必纠结这个差异。 func toNumber(t *testing.T, v any) float64 { t.Helper() switch n := v.(type) { case int64: return float64(n) case float64: return n default: t.Fatalf("不是数字: %#v", v) return 0 } }