1 package graphb
2
3 import (
4 "testing"
5
6 "github.com/stretchr/testify/assert"
7 )
8
9 func TestArgumentAny(t *testing.T) {
10 arg, err := ArgumentAny("arg", 1)
11 assert.Nil(t, err)
12 assert.Equal(t, Argument{"arg", argInt(1)}, arg)
13
14 arg, err = ArgumentAny("arg", true)
15 assert.Nil(t, err)
16 assert.Equal(t, Argument{"arg", argBool(true)}, arg)
17
18 arg, err = ArgumentAny("arg", "str")
19 assert.Nil(t, err)
20 assert.Equal(t, Argument{"arg", argString("str")}, arg)
21
22 arg, err = ArgumentAny("arg", []string{"str", "slice"})
23 assert.Nil(t, err)
24 assert.Equal(t, Argument{"arg", argStringSlice([]string{"str", "slice"})}, arg)
25
26 arg, err = ArgumentAny("arg", []bool{true, false})
27 assert.Nil(t, err)
28 assert.Equal(t, Argument{"arg", argBoolSlice([]bool{true, false})}, arg)
29
30 arg, err = ArgumentAny("arg", []int{1, 2})
31 assert.Nil(t, err)
32 assert.Equal(t, Argument{"arg", argIntSlice([]int{1, 2})}, arg)
33
34
35 arg, err = ArgumentAny("arg", 1.1)
36 assert.IsType(t, ArgumentTypeNotSupportedErr{}, err)
37 assert.Equal(t, "Argument 1.1 of Type float64 is not supported", err.Error())
38 assert.Equal(t, Argument{}, arg)
39 }
40
41 func TestArgumentBool(t *testing.T) {
42 a := ArgumentBool("blocked", true)
43 assert.Equal(t, Argument{"blocked", argBool(true)}, a)
44
45 a = ArgumentBool("blocked", false)
46 assert.Equal(t, Argument{"blocked", argBool(false)}, a)
47 }
48
49 func TestArgumentInt(t *testing.T) {
50 a := ArgumentInt("blocked", 1)
51 assert.Equal(t, Argument{"blocked", argInt(1)}, a)
52 }
53
54 func TestArgumentString(t *testing.T) {
55 a := ArgumentString("blocked", "a")
56 assert.Equal(t, Argument{"blocked", argString("a")}, a)
57 a = ArgumentString("blocked", "")
58 assert.Equal(t, Argument{"blocked", argString("")}, a)
59 }
60
61 func TestArgumentStringSlice(t *testing.T) {
62 a := ArgumentStringSlice("blocked", "a", "b", "", " ", "d")
63 assert.Equal(t, Argument{"blocked", argStringSlice([]string{"a", "b", "", " ", "d"})}, a)
64
65 a = ArgumentStringSlice("blocked")
66 assert.Equal(t, Argument{"blocked", argStringSlice(nil)}, a)
67 }
68
69 func Test_argBool(t *testing.T) {
70 b := argBool(true)
71 i := 0
72 for str := range b.stringChan() {
73 assert.Equal(t, "true", str)
74 i++
75 }
76 assert.Equal(t, 1, i)
77 }
78
79 func Test_argBoolSlice(t *testing.T) {
80 bs := argBoolSlice([]bool{true, false})
81 c := bs.stringChan()
82 i := 0
83 tokens := []string{"[", "true", ",", "false", "]"}
84 for str, ok := <-c; ok; str, ok = <-c {
85 assert.Equal(t, tokens[i], str)
86 i++
87 }
88 assert.Equal(t, len(tokens), i)
89 }
90
91 func Test_argIntSlice(t *testing.T) {
92 is := argIntSlice([]int{1, -1, 0})
93 tokens := []string{"[", "1", ",", "-1", ",", "0", "]"}
94 i := 0
95 for str := range is.stringChan() {
96 assert.Equal(t, tokens[i], str)
97 i++
98 }
99 assert.Equal(t, len(tokens), i)
100 }
101
View as plain text