예제 #1
0
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)
	}
}
예제 #2
0
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)
	}
}
예제 #3
0
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)
	}
}