-
Notifications
You must be signed in to change notification settings - Fork 20
/
Copy pathargument_test.go
100 lines (82 loc) · 2.63 KB
/
argument_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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package graphb
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestArgumentAny(t *testing.T) {
arg, err := ArgumentAny("arg", 1)
assert.Nil(t, err)
assert.Equal(t, Argument{"arg", argInt(1)}, arg)
arg, err = ArgumentAny("arg", true)
assert.Nil(t, err)
assert.Equal(t, Argument{"arg", argBool(true)}, arg)
arg, err = ArgumentAny("arg", "str")
assert.Nil(t, err)
assert.Equal(t, Argument{"arg", argString("str")}, arg)
arg, err = ArgumentAny("arg", []string{"str", "slice"})
assert.Nil(t, err)
assert.Equal(t, Argument{"arg", argStringSlice([]string{"str", "slice"})}, arg)
arg, err = ArgumentAny("arg", []bool{true, false})
assert.Nil(t, err)
assert.Equal(t, Argument{"arg", argBoolSlice([]bool{true, false})}, arg)
arg, err = ArgumentAny("arg", []int{1, 2})
assert.Nil(t, err)
assert.Equal(t, Argument{"arg", argIntSlice([]int{1, 2})}, arg)
// Type Not Supported
arg, err = ArgumentAny("arg", 1.1)
assert.IsType(t, ArgumentTypeNotSupportedErr{}, err)
assert.Equal(t, "Argument 1.1 of Type float64 is not supported", err.Error())
assert.Equal(t, Argument{}, arg)
}
func TestArgumentBool(t *testing.T) {
a := ArgumentBool("blocked", true)
assert.Equal(t, Argument{"blocked", argBool(true)}, a)
a = ArgumentBool("blocked", false)
assert.Equal(t, Argument{"blocked", argBool(false)}, a)
}
func TestArgumentInt(t *testing.T) {
a := ArgumentInt("blocked", 1)
assert.Equal(t, Argument{"blocked", argInt(1)}, a)
}
func TestArgumentString(t *testing.T) {
a := ArgumentString("blocked", "a")
assert.Equal(t, Argument{"blocked", argString("a")}, a)
a = ArgumentString("blocked", "")
assert.Equal(t, Argument{"blocked", argString("")}, a)
}
func TestArgumentStringSlice(t *testing.T) {
a := ArgumentStringSlice("blocked", "a", "b", "", " ", "d")
assert.Equal(t, Argument{"blocked", argStringSlice([]string{"a", "b", "", " ", "d"})}, a)
a = ArgumentStringSlice("blocked")
assert.Equal(t, Argument{"blocked", argStringSlice(nil)}, a)
}
func Test_argBool(t *testing.T) {
b := argBool(true)
i := 0
for str := range b.stringChan() {
assert.Equal(t, "true", str)
i++
}
assert.Equal(t, 1, i)
}
func Test_argBoolSlice(t *testing.T) {
bs := argBoolSlice([]bool{true, false})
c := bs.stringChan()
i := 0
tokens := []string{"[", "true", ",", "false", "]"}
for str, ok := <-c; ok; str, ok = <-c {
assert.Equal(t, tokens[i], str)
i++
}
assert.Equal(t, len(tokens), i)
}
func Test_argIntSlice(t *testing.T) {
is := argIntSlice([]int{1, -1, 0})
tokens := []string{"[", "1", ",", "-1", ",", "0", "]"}
i := 0
for str := range is.stringChan() {
assert.Equal(t, tokens[i], str)
i++
}
assert.Equal(t, len(tokens), i)
}