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") } }
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") } }
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") } }
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") } }
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") } }
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") } }