1 | import cli |
2 | |
3 | fn 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 | |
45 | fn 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 | |
68 | fn 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 | |
114 | fn 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 | |
159 | fn 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 | |
181 | fn 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 | |
196 | fn 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 | } |