Create & Init Project...
This commit is contained in:
49
app/service/live/broadcast-proxy/expr/expr_test.go
Normal file
49
app/service/live/broadcast-proxy/expr/expr_test.go
Normal file
@ -0,0 +1,49 @@
|
||||
package expr
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestExpr(t *testing.T) {
|
||||
tests := []struct {
|
||||
expr string
|
||||
env Env
|
||||
want string
|
||||
}{
|
||||
{"$1 > 80 && $2 <9", Env{"$1": 100, "$2": 2}, "true"},
|
||||
{"$1 % 10", Env{"$1": 104, "$2": 2}, "4"},
|
||||
{"pow(x, false) + pow(y, false)", Env{"x": 12, "y": 1}, "2"},
|
||||
{"pow(x, 3) + pow(y, 3)", Env{"x": 9, "y": 10}, "1729"},
|
||||
{"5.0 / 9 * (F - 32)", Env{"F": -40}, "-40"},
|
||||
{"5.0 / 9 * (F - 32)", Env{"F": 32}, "0"},
|
||||
{"5.0 / 9 * (F - 32)", Env{"F": 212}, "100"},
|
||||
////!-Eval
|
||||
//// additional tests that don't appear in the book
|
||||
{"-1 + -x", Env{"x": 1}, "-2"},
|
||||
{"-1 - x", Env{"x": 1}, "-2"},
|
||||
{"a >= 10", Env{"a": 15}, "true"},
|
||||
{"b >= sin(10) && a < 1", Env{"a": 9, "b": 10}, "false"},
|
||||
{"!!!true", Env{"a": 9, "b": 10}, "false"},
|
||||
//!+Eval
|
||||
}
|
||||
var prevExpr string
|
||||
parser := NewExpressionParser()
|
||||
for _, test := range tests {
|
||||
// Print expr only when it changes.
|
||||
if test.expr != prevExpr {
|
||||
t.Logf("\n%s\n", test.expr)
|
||||
prevExpr = test.expr
|
||||
}
|
||||
if err := parser.Parse(test.expr); err != nil {
|
||||
t.Error(err) // parse error
|
||||
continue
|
||||
}
|
||||
got := fmt.Sprintf("%v", parser.GetExpr().Eval(test.env))
|
||||
t.Logf("\t%v => %s\n", test.env, got)
|
||||
if got != test.want {
|
||||
t.Errorf("%s.Eval() in %v = %q, want %q\n",
|
||||
test.expr, test.env, got, test.want)
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user