59 lines
908 B
Go
59 lines
908 B
Go
package tengo_test
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/d5/tengo/v2"
|
|
"github.com/d5/tengo/v2/require"
|
|
)
|
|
|
|
func TestEval(t *testing.T) {
|
|
eval := func(
|
|
expr string,
|
|
params map[string]interface{},
|
|
expected interface{},
|
|
) {
|
|
ctx := context.Background()
|
|
actual, err := tengo.Eval(ctx, expr, params)
|
|
require.NoError(t, err)
|
|
require.Equal(t, expected, actual)
|
|
}
|
|
|
|
eval(`undefined`, nil, nil)
|
|
eval(`1`, nil, int64(1))
|
|
eval(`19 + 23`, nil, int64(42))
|
|
eval(`"foo bar"`, nil, "foo bar")
|
|
eval(`[1, 2, 3][1]`, nil, int64(2))
|
|
|
|
eval(
|
|
`5 + p`,
|
|
map[string]interface{}{
|
|
"p": 7,
|
|
},
|
|
int64(12),
|
|
)
|
|
eval(
|
|
`"seven is " + p`,
|
|
map[string]interface{}{
|
|
"p": 7,
|
|
},
|
|
"seven is 7",
|
|
)
|
|
eval(
|
|
`"" + a + b`,
|
|
map[string]interface{}{
|
|
"a": 7,
|
|
"b": " is seven",
|
|
},
|
|
"7 is seven",
|
|
)
|
|
|
|
eval(
|
|
`a ? "success" : "fail"`,
|
|
map[string]interface{}{
|
|
"a": 1,
|
|
},
|
|
"success",
|
|
)
|
|
}
|