Пример #1
0
func TestComposeContains(t *testing.T) {
	expr := ast.NewNestedFunction("contains",
		ast.NewNestedFunction("toLower", ast.NewStringVar()),
		ast.NewNestedFunction("toLower", ast.NewStringConst("TheStreet")),
	)
	b, err := NewBool(expr)
	if err != nil {
		panic(err)
	}
	f, err := NewBoolFunc(b)
	if err != nil {
		panic(err)
	}
	r, err := f.Eval(debug.NewStringValue("TheStreet"))
	if err != nil {
		panic(err)
	}
	if r != true {
		t.Fatalf("expected true")
	}
	r, err = f.Eval(debug.NewStringValue("ThatStreet"))
	if err != nil {
		panic(err)
	}
	if r != false {
		t.Fatalf("expected false")
	}
	if strings.Contains(funcs.Sprint(f.(*composedBool).Func), "toLower(`TheStreet`)") {
		t.Fatalf("trimming did not work")
	}
}
Пример #2
0
func TestNoTrim(t *testing.T) {
	expr := ast.NewNestedFunction("eq",
		ast.NewNestedFunction("elem",
			ast.NewStringList(
				ast.NewNestedFunction("print",
					ast.NewStringVar(),
				),
			),
			ast.NewIntConst(0),
		),
		ast.NewStringConst("abc"),
	)
	b, err := NewBool(expr)
	if err != nil {
		panic(err)
	}
	f, err := NewBoolFunc(b)
	if err != nil {
		panic(err)
	}
	str := funcs.Sprint(f.(*composedBool).Func)
	if str == "false" {
		t.Fatalf("too much trimming")
	}
	t.Logf("trimmed = %s", str)
	r, err := f.Eval(debug.NewStringValue("abc"))
	if err != nil {
		panic(err)
	}
	if r != true {
		t.Fatalf("expected true")
	}
}
Пример #3
0
func TestComposeBuiltInRegex(t *testing.T) {
	expr := ast.NewRegex(
		ast.NewStringConst("ab"),
	)
	b, err := NewBool(expr)
	if err != nil {
		panic(err)
	}
	f, err := NewBoolFunc(b)
	if err != nil {
		panic(err)
	}
	r, err := f.Eval(debug.NewStringValue("ab"))
	if err != nil {
		panic(err)
	}
	if r != true {
		t.Fatalf("expected true")
	}
}
Пример #4
0
func TestComposeStringEq(t *testing.T) {
	expr := ast.NewNestedFunction("eq",
		ast.NewNestedFunction("toLower", ast.NewStringVar()),
		ast.NewNestedFunction("toLower", ast.NewStringConst("TheStreet")),
	)
	b, err := NewBool(expr)
	if err != nil {
		panic(err)
	}
	f, err := NewBoolFunc(b)
	if err != nil {
		panic(err)
	}
	r, err := f.Eval(debug.NewStringValue("TheStreet"))
	if err != nil {
		panic(err)
	}
	if r != true {
		t.Fatalf("expected true")
	}
}
Пример #5
0
func TestComposeRegex(t *testing.T) {
	expr := ast.NewNestedFunction("regex",
		ast.NewStringConst("ab"),
		ast.NewStringVar(),
	)
	b, err := NewBool(expr)
	if err != nil {
		panic(err)
	}
	f, err := NewBoolFunc(b)
	if err != nil {
		panic(err)
	}
	r, err := f.Eval(debug.NewStringValue("a"))
	if err != nil {
		panic(err)
	}
	if r != false {
		t.Fatalf("expected false")
	}
}
Пример #6
0
func TestNoEqualError(t *testing.T) {
	exprStr := Sprint(StringEq(ElemStrings(NewListOfString([]String{StringVar()}), IntConst(3)), StringConst("0123456789")))
	t.Logf(exprStr)
	e, err := parser.NewParser().ParseExpr(exprStr)
	if err != nil {
		t.Fatal(err)
	}
	b, err := compose.NewBool(e)
	if err != nil {
		t.Fatal(err)
	}
	f, err := compose.NewBoolFunc(b)
	if err != nil {
		t.Fatal(err)
	}
	if v, err := f.Eval(debug.NewStringValue("0")); err != nil {
		t.Fatal(err)
	} else if v {
		t.Fatalf("expected false")
	}
}