3
0
corteza/pkg/expr/parser_test.go
Vivek Patel 760aec1c18 Update argument type of set expr function
It changes 3rd argument type os set expr function from TypedValue to interface, since GvalParser parses argument to native types before evaluating the expression.
2022-02-07 09:21:31 +01:00

53 lines
927 B
Go

package expr
import (
"context"
"github.com/stretchr/testify/require"
"testing"
)
func Example_simpleExpression() {
eval(`40 + 2`, nil)
// output:
// 42
}
func TestParser(t *testing.T) {
var (
req = require.New(t)
ctx = context.Background()
p = Parser()
e, err = p.NewEvaluable("0 == 0")
result bool
)
req.NoError(err)
result, err = e.EvalBool(ctx, nil)
req.NoError(err)
req.True(result)
}
func TestGvalParser(t *testing.T) {
var (
req = require.New(t)
ctx = context.Background()
p = NewGvalParser()
vv, err = NewVars(map[string]interface{}{
"vars": &Vars{},
"key": "foo",
"value": Must(NewString("foo")),
})
result interface{}
)
req.NoError(err)
pp, err := p.Parse("toJSON(set(vars, key, value))")
req.NoError(err)
result, err = pp.Eval(ctx, vv)
req.NoError(err)
req.Equal("{\"foo\":{\"@value\":\"foo\",\"@type\":\"String\"}}", result)
}