package fuzz import ( "fmt" "github.com/expr-lang/expr" ) func NewEnv() map[string]any { return map[string]any{ "ok": true, "f64": .5, "f32": float32(.5), "i": 1, "i64": int64(1), "i32": int32(1), "array": []int{1, 2, 3, 4, 5}, "list": []Foo{{"bar"}, {"baz"}}, "foo": Foo{"bar"}, "add": func(a, b int) int { return a + b }, "div": func(a, b int) int { return a / b }, "half": func(a float64) float64 { return a / 2 }, "score": func(a int, x ...int) int { s := a for _, n := range x { s += n } return s }, "greet": func(name string) string { return "Hello, " + name }, } } func Func() expr.Option { return expr.Function("fn", func(params ...any) (any, error) { return fmt.Sprintf("fn(%v)", params), nil }) } type Foo struct { Bar string } func (f Foo) String() string { return "foo" } func (f Foo) Qux(s string) string { return f.Bar + s }