mirror of
https://github.com/hanzoai/eval.git
synced 2026-09-30 21:47:09 +00:00
Module path renamed to github.com/hanzoai/eval and the Go package renamed from govaluate to eval. Evaluation, parsing, lexing, and operator behavior are unchanged; MIT license and George Lester attribution retained. See NOTICE for lineage.
95 lines
1.9 KiB
Go
95 lines
1.9 KiB
Go
package eval
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
/*
|
|
Struct used to test "parameter calls".
|
|
*/
|
|
type dummyParameter struct {
|
|
String string
|
|
Int int
|
|
BoolFalse bool
|
|
Nil interface{}
|
|
Nested dummyNestedParameter
|
|
Map map[string]interface{}
|
|
}
|
|
|
|
func (this dummyParameter) Func() string {
|
|
return "funk"
|
|
}
|
|
|
|
func (this dummyParameter) Func2() (string, error) {
|
|
return "frink", nil
|
|
}
|
|
|
|
func (this *dummyParameter) Func3() string {
|
|
return "fronk"
|
|
}
|
|
|
|
func (this dummyParameter) FuncArgStr(arg1 string) string {
|
|
return arg1
|
|
}
|
|
|
|
func (this dummyParameter) TestArgs(str string, ui uint, ui8 uint8, ui16 uint16, ui32 uint32, ui64 uint64, i int, i8 int8, i16 int16, i32 int32, i64 int64, f32 float32, f64 float64, b bool) string {
|
|
|
|
var sum float64
|
|
|
|
sum = float64(ui) + float64(ui8) + float64(ui16) + float64(ui32) + float64(ui64)
|
|
sum += float64(i) + float64(i8) + float64(i16) + float64(i32) + float64(i64)
|
|
sum += float64(f32)
|
|
|
|
if b {
|
|
sum += f64
|
|
}
|
|
|
|
return fmt.Sprintf("%v: %v", str, sum)
|
|
}
|
|
|
|
func (this dummyParameter) AlwaysFail() (interface{}, error) {
|
|
return nil, errors.New("function should always fail")
|
|
}
|
|
|
|
type dummyNestedParameter struct {
|
|
Funk string
|
|
}
|
|
|
|
func (this dummyNestedParameter) Dunk(arg1 string) string {
|
|
return arg1 + "dunk"
|
|
}
|
|
|
|
var dummyParameterInstance = dummyParameter{
|
|
String: "string!",
|
|
Int: 101,
|
|
BoolFalse: false,
|
|
Nil: nil,
|
|
Nested: dummyNestedParameter{
|
|
Funk: "funkalicious",
|
|
},
|
|
Map: map[string]interface{}{
|
|
"String": "string!",
|
|
"Int": 101,
|
|
"StringCompare": strings.Compare,
|
|
"IntArray": []interface{}{1, 2, 3},
|
|
"StringArray": []interface{}{"foo", "bar", "baz"},
|
|
},
|
|
}
|
|
|
|
var fooParameter = EvaluationParameter{
|
|
Name: "foo",
|
|
Value: dummyParameterInstance,
|
|
}
|
|
|
|
var fooPtrParameter = EvaluationParameter{
|
|
Name: "fooptr",
|
|
Value: &dummyParameterInstance,
|
|
}
|
|
|
|
var fooFailureParameters = map[string]interface{}{
|
|
"foo": fooParameter.Value,
|
|
"fooptr": &fooPtrParameter.Value,
|
|
}
|