func TestInclude(t *testing.T) { lang, _ := qlang.New(qlang.InsertSemis) qlang.SetReadFile(func(file string) ([]byte, error) { return []byte(scriptA), nil }) err := lang.SafeExec([]byte(scriptB), "b.ql") if err != nil { t.Fatal(err) } if v, ok := lang.Var("b"); !ok || v != 2 { t.Fatal("b != 2, b =", v) } }
func TestImport(t *testing.T) { lang, _ := qlang.New(qlang.InsertSemis) qlang.SetFindEntry(func(file string, libs []string) (string, error) { return file, nil }) qlang.SetReadFile(func(file string) ([]byte, error) { return []byte(scriptA), nil }) err := lang.SafeExec([]byte(scriptC), "c.ql") if err != nil { t.Fatal(err) } if v, ok := lang.Var("a"); !ok || v.(map[string]interface{})["b"] != 4 { t.Fatal("a.b != 4, a.b =", v) } }
func TestModuleClass(t *testing.T) { lang, _ := qlang.New(qlang.InsertSemis) qlang.SetFindEntry(func(file string, libs []string) (string, error) { return file, nil }) qlang.SetReadFile(func(file string) ([]byte, error) { return []byte(scriptA2), nil }) err := lang.SafeExec([]byte(scriptB2), "b.ql") if err != nil { t.Fatal(err) } if v, ok := lang.Var("x"); !ok || v != 2 { t.Fatal("x != 2, x =", v) } }
func TestModuleDefer(t *testing.T) { lang, _ := qlang.New(qlang.InsertSemis) qlang.SetFindEntry(func(file string, libs []string) (string, error) { return file, nil }) qlang.SetReadFile(func(file string) ([]byte, error) { return []byte(scriptA1), nil }) err := lang.SafeExec([]byte(scriptB1), "b.ql") if err != nil { t.Fatal(err) } if v, ok := lang.Var("a"); !ok || v.(map[string]interface{})["x"] != 2 { t.Fatal("x != 2, x =", v) } }