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  }