v / vlib / cli
Raw file | 216 loc (186 sloc) | 4.43 KB | Latest commit hash 125236694
1import cli
2
3fn test_if_string_flag_parses() {
4 mut flag := cli.Flag{
5 flag: .string
6 name: 'flag'
7 }
8 flag.parse(['-flag', 'value1'], false) or { panic(err) }
9 mut value := flag.get_string() or { panic(err) }
10 assert value == 'value1'
11
12 flag = cli.Flag{
13 flag: .string
14 name: 'flag'
15 }
16 flag.parse(['-flag=value2'], false) or { panic(err) }
17 value = flag.get_string() or { panic(err) }
18 assert value == 'value2'
19
20 flag = cli.Flag{
21 flag: .string_array
22 name: 'flag'
23 }
24 flag.parse(['-flag=value1'], false) or { panic(err) }
25 flag.parse(['-flag=value2'], false) or { panic(err) }
26 mut values := flag.get_strings() or { panic(err) }
27 assert values == ['value1', 'value2']
28
29 flags := [
30 cli.Flag{
31 flag: .string_array
32 name: 'flag'
33 value: ['a', 'b', 'c']
34 },
35 cli.Flag{
36 flag: .string
37 name: 'flag2'
38 },
39 ]
40
41 values = flags.get_strings('flag') or { panic(err) }
42 assert values == ['a', 'b', 'c']
43}
44
45fn test_if_bool_flag_parses() {
46 mut flag := cli.Flag{
47 flag: .bool
48 name: 'flag'
49 }
50 mut value := false
51 flag.parse(['-flag'], false) or { panic(err) }
52 value = flag.get_bool() or { panic(err) }
53 assert value == true
54 flag.parse(['-flag', 'false'], false) or { panic(err) }
55 value = flag.get_bool() or { panic(err) }
56 assert value == false
57 flag.parse(['-flag', 'true'], false) or { panic(err) }
58 value = flag.get_bool() or { panic(err) }
59 assert value == true
60 flag.parse(['-flag=false'], false) or { panic(err) }
61 value = flag.get_bool() or { panic(err) }
62 assert value == false
63 flag.parse(['-flag=true'], false) or { panic(err) }
64 value = flag.get_bool() or { panic(err) }
65 assert value == true
66}
67
68fn test_if_int_flag_parses() {
69 mut flag := cli.Flag{
70 flag: .int
71 name: 'flag'
72 }
73
74 mut value := 0
75 flag.parse(['-flag', '42'], false) or { panic(err) }
76 value = flag.get_int() or { panic(err) }
77 assert value == 42
78
79 flag = cli.Flag{
80 flag: .int
81 name: 'flag'
82 }
83
84 flag.parse(['-flag=45'], false) or { panic(err) }
85 value = flag.get_int() or { panic(err) }
86 assert value == 45
87
88 flag = cli.Flag{
89 flag: .int_array
90 name: 'flag'
91 }
92
93 flag.parse(['-flag=42'], false) or { panic(err) }
94 flag.parse(['-flag=45'], false) or { panic(err) }
95 mut values := flag.get_ints() or { panic(err) }
96 assert values == [42, 45]
97
98 flags := [
99 cli.Flag{
100 flag: .int_array
101 name: 'flag'
102 value: ['1', '2', '3']
103 },
104 cli.Flag{
105 flag: .int
106 name: 'flag2'
107 },
108 ]
109
110 values = flags.get_ints('flag') or { panic(err) }
111 assert values == [1, 2, 3]
112}
113
114fn test_if_float_flag_parses() {
115 mut flag := cli.Flag{
116 flag: .float
117 name: 'flag'
118 }
119 mut value := f64(0)
120 flag.parse(['-flag', '3.14158'], false) or { panic(err) }
121 value = flag.get_float() or { panic(err) }
122 assert value == 3.14158
123
124 flag = cli.Flag{
125 flag: .float
126 name: 'flag'
127 }
128
129 flag.parse(['-flag=3.14159'], false) or { panic(err) }
130 value = flag.get_float() or { panic(err) }
131 assert value == 3.14159
132
133 flag = cli.Flag{
134 flag: .float_array
135 name: 'flag'
136 }
137
138 flag.parse(['-flag=3.1'], false) or { panic(err) }
139 flag.parse(['-flag=1.3'], false) or { panic(err) }
140 mut values := flag.get_floats() or { panic(err) }
141 assert values == [3.1, 1.3]
142
143 flags := [
144 cli.Flag{
145 flag: .float_array
146 name: 'flag'
147 value: ['1.1', '2.2', '3.3']
148 },
149 cli.Flag{
150 flag: .float
151 name: 'flag2'
152 },
153 ]
154
155 values = flags.get_floats('flag') or { panic(err) }
156 assert values == [1.1, 2.2, 3.3]
157}
158
159fn test_if_flag_parses_with_abbrev() {
160 mut flag := cli.Flag{
161 flag: .bool
162 name: 'flag'
163 abbrev: 'f'
164 }
165 mut value := false
166 flag.parse(['--flag'], true) or { panic(err) }
167 value = flag.get_bool() or { panic(err) }
168 assert value == true
169
170 value = false
171 flag = cli.Flag{
172 flag: .bool
173 name: 'flag'
174 abbrev: 'f'
175 }
176 flag.parse(['-f'], true) or { panic(err) }
177 value = flag.get_bool() or { panic(err) }
178 assert value == true
179}
180
181fn test_if_multiple_value_on_single_value() {
182 mut flag := cli.Flag{
183 flag: .float
184 name: 'flag'
185 }
186
187 flag.parse(['-flag', '3.14158'], false) or { panic(err) }
188
189 if _ := flag.parse(['-flag', '3.222'], false) {
190 panic("No multiple value flag don't raise an error!")
191 } else {
192 assert true
193 }
194}
195
196fn test_default_value() {
197 mut flag := cli.Flag{
198 flag: .float
199 name: 'flag'
200 default_value: ['1.234']
201 }
202
203 flag.parse(['-flag', '3.14158'], false) or { panic(err) }
204 mut value := flag.get_float() or { panic(err) }
205 assert value == 3.14158
206
207 flag = cli.Flag{
208 flag: .float
209 name: 'flag'
210 default_value: ['1.234']
211 }
212
213 flag.parse([''], false) or { panic(err) }
214 value = flag.get_float() or { panic(err) }
215 assert value == 1.234
216}