-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathflags_test.go
114 lines (86 loc) · 2.65 KB
/
flags_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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
package flags_test
import (
"testing"
"github.com/aneshas/flags"
"github.com/stretchr/testify/assert"
)
var args = []string{
"cmd",
}
func TestShould_Convert_And_Set_Flag_Values(t *testing.T) {
var (
strVal string = "http://google.com"
intVal int = 8080
largeIVal int64 = 100000
smallVal uint = 1
largeUVal uint64 = 100000
boolVal bool = true
floatVal float64 = 4.50
)
var (
fs flags.FlagSet
strFlag = fs.String("strFlag", "Flag usage", "", newNullResolver())
intFlag = fs.Int("intFlag", "Flag usage", 0, newNullResolver())
largeIFlag = fs.Int64("int46Flag", "Flag usage", 0, newNullResolver())
smallFlag = fs.Uint("uFlag", "Flag usage", 0, newNullResolver())
largeUFlag = fs.Uint64("u64Flag", "Flag usage", 0, newNullResolver())
boolFlag = fs.Bool("boolFlag", "Flag usage", false, newNullResolver())
floatFlag = fs.Float64("floatFlag", "Flag usage", 0.0, newNullResolver())
)
fs.Parse(args)
err := fs.Set(0, strVal, "")
assert.NoError(t, err)
err = fs.Set(1, intVal, intVal)
assert.NoError(t, err)
err = fs.Set(2, largeIVal, largeIVal)
assert.NoError(t, err)
err = fs.Set(3, smallVal, smallVal)
assert.NoError(t, err)
err = fs.Set(4, largeUVal, largeUVal)
assert.NoError(t, err)
err = fs.Set(5, boolVal, boolVal)
assert.NoError(t, err)
err = fs.Set(6, floatVal, floatVal)
assert.NoError(t, err)
assert.Equal(t, strVal, *strFlag)
assert.Equal(t, intVal, *intFlag)
assert.Equal(t, largeIVal, *largeIFlag)
assert.Equal(t, smallVal, *smallFlag)
assert.Equal(t, largeUVal, *largeUFlag)
assert.Equal(t, boolVal, *boolFlag)
assert.Equal(t, floatVal, *floatFlag)
}
func TestShould_Throw_Error_If_Setting_Non_Defined_Flag(t *testing.T) {
var fs flags.FlagSet
fs.Parse(args)
err := fs.Set(0, "", "")
assert.Error(t, err)
}
func TestShould_Throw_Error_If_Converting_A_Value_Of_Wrong_Type(t *testing.T) {
var fs flags.FlagSet
fs.Int("intFlag", "Flag usage", 0)
fs.Int64("int46Flag", "Flag usage", 0)
fs.Uint("uFlag", "Flag usage", 0)
fs.Uint64("u64Flag", "Flag usage", 0)
fs.Bool("boolFlag", "Flag usage", false)
fs.Float64("floatFlag", "Flag usage", 0.0)
fs.String("strFlag", "Flag usage", "")
fs.Parse(args)
err := fs.Set(0, "foo", int(0))
assert.Error(t, err)
err = fs.Set(1, "foo", int64(0))
assert.Error(t, err)
err = fs.Set(2, "foo", uint(0))
assert.Error(t, err)
err = fs.Set(3, "foo", uint64(0))
assert.Error(t, err)
err = fs.Set(4, "foo", true)
assert.Error(t, err)
err = fs.Set(5, "foo", float64(1.0))
assert.Error(t, err)
}
func newNullResolver() flags.ResolverFunc {
return func(fs *flags.FlagSet, flag string, t interface{}, i int) bool {
return true
}
}