-
Notifications
You must be signed in to change notification settings - Fork 4
/
formula_test.go
48 lines (44 loc) · 1.08 KB
/
formula_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package formula
import (
"math"
"testing"
)
func TestFormula_Eval(t *testing.T) {
formula, err := New("(1 * 2 / 3 + 4 - 5 * (21*z+pow(x*3, 3)))")
if err != nil {
t.Error(err)
return
}
actual := formula.Eval(Var("x", 4.5), Var("z", 5))
expected := 1.0*2.0/3.0 + 4.0 - 5.0*(21.0*5.0+math.Pow(4.5*3.0, 3.0))
if expected != actual {
t.Errorf("expected formula result and Go result to be equal: expected: %v, actual: %v", expected, actual)
return
}
}
func TestSpecialConstants(t *testing.T) {
formula, err := New("π + z")
if err != nil {
t.Error(err)
return
}
actual := formula.Eval(Var("z", 5))
expected := math.Pi + 5
if expected != actual {
t.Errorf("expected formula result and Go result to be equal: expected: %v, actual: %v", expected, actual)
return
}
}
func TestMinMax(t *testing.T) {
formula, err := New("min(1,2,3) + max(3,2,1)")
if err != nil {
t.Error(err)
return
}
actual := formula.Eval()
expected := 4.0
if expected != actual {
t.Errorf("expected formula result and Go result to be equal: expected: %v, actual: %v", expected, actual)
return
}
}