@@ -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+
11117func TestArgumentsRootCommand (t * testing.T ) {
12118 tests := []struct {
13119 name string
0 commit comments