Skip to content

Commit cfabbb6

Browse files
committed
Add tests
1 parent 7d7f52c commit cfabbb6

File tree

1 file changed

+106
-0
lines changed

1 file changed

+106
-0
lines changed

args_test.go

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,112 @@ import (
88
"github.com/stretchr/testify/require"
99
)
1010

11+
type intnum interface {
12+
int | int8 | int16 | int32 | int64
13+
}
14+
15+
type uintnum interface {
16+
uint | uint8 | uint16 | uint32 | uint64
17+
}
18+
19+
func intTypes[T intnum](t *testing.T) {
20+
cmd := buildMinimalTestCommand()
21+
var ival T
22+
cmd.Arguments = []Argument{
23+
&ArgumentBase[T, IntegerConfig, intValue[T]]{
24+
Name: "ia",
25+
Destination: &ival,
26+
},
27+
}
28+
29+
err := cmd.Run(buildTestContext(t), []string{"foo", "10"})
30+
r := require.New(t)
31+
r.NoError(err)
32+
r.Equal(T(10), ival)
33+
r.Equal(T(10), arg[T]("ia", cmd))
34+
}
35+
36+
func intArrTypes[T intnum](t *testing.T) {
37+
cmd := buildMinimalTestCommand()
38+
var ival []T
39+
cmd.Arguments = []Argument{
40+
&ArgumentsBase[T, IntegerConfig, intValue[T]]{
41+
Name: "ia",
42+
Min: 1,
43+
Max: -1,
44+
Destination: &ival,
45+
},
46+
}
47+
48+
err := cmd.Run(buildTestContext(t), []string{"foo", "10", "11", "12"})
49+
r := require.New(t)
50+
r.NoError(err)
51+
r.Equal([]T{10, 11, 12}, ival)
52+
r.Equal([]T{10, 11, 12}, arg[[]T]("ia", cmd))
53+
}
54+
55+
func uintTypes[T uintnum](t *testing.T) {
56+
cmd := buildMinimalTestCommand()
57+
var ival T
58+
cmd.Arguments = []Argument{
59+
&ArgumentBase[T, IntegerConfig, uintValue[T]]{
60+
Name: "ia",
61+
Destination: &ival,
62+
},
63+
}
64+
65+
err := cmd.Run(buildTestContext(t), []string{"foo", "10"})
66+
r := require.New(t)
67+
r.NoError(err)
68+
r.Equal(T(10), ival)
69+
r.Equal(T(10), arg[T]("ia", cmd))
70+
}
71+
72+
func uintArrTypes[T uintnum](t *testing.T) {
73+
cmd := buildMinimalTestCommand()
74+
var ival []T
75+
cmd.Arguments = []Argument{
76+
&ArgumentsBase[T, IntegerConfig, uintValue[T]]{
77+
Name: "ia",
78+
Min: 1,
79+
Max: -1,
80+
Destination: &ival,
81+
},
82+
}
83+
84+
err := cmd.Run(buildTestContext(t), []string{"foo", "10", "11", "12"})
85+
r := require.New(t)
86+
r.NoError(err)
87+
r.Equal([]T{10, 11, 12}, ival)
88+
r.Equal([]T{10, 11, 12}, arg[[]T]("ia", cmd))
89+
}
90+
91+
func TestArgumentsRootCommandAllTypes(t *testing.T) {
92+
intTypes[int](t)
93+
intTypes[int8](t)
94+
intTypes[int16](t)
95+
intTypes[int32](t)
96+
intTypes[int64](t)
97+
98+
uintTypes[uint](t)
99+
uintTypes[uint8](t)
100+
uintTypes[uint16](t)
101+
uintTypes[uint32](t)
102+
uintTypes[uint64](t)
103+
104+
intArrTypes[int](t)
105+
intArrTypes[int8](t)
106+
intArrTypes[int16](t)
107+
intArrTypes[int32](t)
108+
intArrTypes[int64](t)
109+
110+
uintArrTypes[uint](t)
111+
uintArrTypes[uint8](t)
112+
uintArrTypes[uint16](t)
113+
uintArrTypes[uint32](t)
114+
uintArrTypes[uint64](t)
115+
}
116+
11117
func TestArgumentsRootCommand(t *testing.T) {
12118
tests := []struct {
13119
name string

0 commit comments

Comments
 (0)