github.com/expr-lang/expr@v1.16.9/test/fuzz/fuzz_env.go (about) 1 package fuzz 2 3 import ( 4 "fmt" 5 6 "github.com/expr-lang/expr" 7 ) 8 9 func NewEnv() map[string]any { 10 return map[string]any{ 11 "ok": true, 12 "f64": .5, 13 "f32": float32(.5), 14 "i": 1, 15 "i64": int64(1), 16 "i32": int32(1), 17 "array": []int{1, 2, 3, 4, 5}, 18 "list": []Foo{{"bar"}, {"baz"}}, 19 "foo": Foo{"bar"}, 20 "add": func(a, b int) int { return a + b }, 21 "div": func(a, b int) int { return a / b }, 22 "half": func(a float64) float64 { return a / 2 }, 23 "score": func(a int, x ...int) int { 24 s := a 25 for _, n := range x { 26 s += n 27 } 28 return s 29 }, 30 "greet": func(name string) string { return "Hello, " + name }, 31 } 32 } 33 34 func Func() expr.Option { 35 return expr.Function("fn", func(params ...any) (any, error) { 36 return fmt.Sprintf("fn(%v)", params), nil 37 }) 38 } 39 40 type Foo struct { 41 Bar string 42 } 43 44 func (f Foo) String() string { 45 return "foo" 46 } 47 48 func (f Foo) Qux(s string) string { 49 return f.Bar + s 50 }