-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlist_rule_test.go
70 lines (56 loc) · 1.04 KB
/
list_rule_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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package overloading
import "testing"
func TestRule(t *testing.T) {
// Expect (int, int)
r := NewListRule(
NewArgument("int"),
NewArgument("int"))
f := func(args ...interface{}) int {
out, err := r.Check(args)
if err != nil {
t.Log(err)
}
a := out[0].(int)
b := out[1].(int)
return a + b
}
if f(3, 2) != 5 {
t.Error("Wrong rule")
}
}
func TestOptionalRule(t *testing.T) {
// Expect (int, int) or (int)
r := NewListRule(
NewArgument("int"),
NewArgument("int", 3))
f := func(args ...interface{}) int {
out, err := r.Check(args)
if err != nil {
t.Log(err)
}
a := out[0].(int)
b := out[1].(int)
return a + b
}
if f(3) != 6 {
t.Error("Wrong rule")
}
}
func TestRuleViolation(t *testing.T) {
// Expect (int, int)
r := NewListRule(
NewArgument("int"),
NewArgument("int"))
f := func(args ...interface{}) int {
out, err := r.Check(args)
if err == nil {
t.Error("There should be some error")
} else {
return 0
}
a := out[0].(int)
b := out[1].(int)
return a + b
}
_ = f(3, 4, 5)
}