v2 / vlib / cli / flag_test.v
171 lines · 147 sloc · 3.79 KB · c51d30bf5309653c6b573ec815268e69a78ea8cc
Raw
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
30fn test_if_bool_flag_parses() {
31 mut flag := cli.Flag{
32 flag: .bool
33 name: 'flag'
34 }
35 mut value := false
36 flag.parse(['-flag'], false) or { panic(err) }
37 value = flag.get_bool() or { panic(err) }
38 assert value == true
39 flag.parse(['-flag', 'false'], false) or { panic(err) }
40 value = flag.get_bool() or { panic(err) }
41 assert value == false
42 flag.parse(['-flag', 'true'], false) or { panic(err) }
43 value = flag.get_bool() or { panic(err) }
44 assert value == true
45 flag.parse(['-flag=false'], false) or { panic(err) }
46 value = flag.get_bool() or { panic(err) }
47 assert value == false
48 flag.parse(['-flag=true'], false) or { panic(err) }
49 value = flag.get_bool() or { panic(err) }
50 assert value == true
51}
52
53fn test_if_int_flag_parses() {
54 mut flag := cli.Flag{
55 flag: .int
56 name: 'flag'
57 }
58
59 mut value := 0
60 flag.parse(['-flag', '42'], false) or { panic(err) }
61 value = flag.get_int() or { panic(err) }
62 assert value == 42
63
64 flag = cli.Flag{
65 flag: .int
66 name: 'flag'
67 }
68
69 flag.parse(['-flag=45'], false) or { panic(err) }
70 value = flag.get_int() or { panic(err) }
71 assert value == 45
72
73 flag = cli.Flag{
74 flag: .int_array
75 name: 'flag'
76 }
77
78 flag.parse(['-flag=42'], false) or { panic(err) }
79 flag.parse(['-flag=45'], false) or { panic(err) }
80 mut values := flag.get_ints() or { panic(err) }
81 assert values == [42, 45]
82}
83
84fn test_if_float_flag_parses() {
85 mut flag := cli.Flag{
86 flag: .float
87 name: 'flag'
88 }
89 mut value := f64(0)
90 flag.parse(['-flag', '3.14158'], false) or { panic(err) }
91 value = flag.get_float() or { panic(err) }
92 assert value == 3.14158
93
94 flag = cli.Flag{
95 flag: .float
96 name: 'flag'
97 }
98
99 flag.parse(['-flag=3.14159'], false) or { panic(err) }
100 value = flag.get_float() or { panic(err) }
101 assert value == 3.14159
102
103 flag = cli.Flag{
104 flag: .float_array
105 name: 'flag'
106 }
107
108 flag.parse(['-flag=3.1'], false) or { panic(err) }
109 flag.parse(['-flag=1.3'], false) or { panic(err) }
110 mut values := flag.get_floats() or { panic(err) }
111 assert values == [3.1, 1.3]
112}
113
114fn test_if_flag_parses_with_abbrev() {
115 mut flag := cli.Flag{
116 flag: .bool
117 name: 'flag'
118 abbrev: 'f'
119 }
120 mut value := false
121 flag.parse(['--flag'], true) or { panic(err) }
122 value = flag.get_bool() or { panic(err) }
123 assert value == true
124
125 value = false
126 flag = cli.Flag{
127 flag: .bool
128 name: 'flag'
129 abbrev: 'f'
130 }
131 flag.parse(['-f'], true) or { panic(err) }
132 value = flag.get_bool() or { panic(err) }
133 assert value == true
134}
135
136fn test_if_multiple_value_on_single_value() {
137 mut flag := cli.Flag{
138 flag: .float
139 name: 'flag'
140 }
141
142 flag.parse(['-flag', '3.14158'], false) or { panic(err) }
143
144 if _ := flag.parse(['-flag', '3.222'], false) {
145 panic("No multiple value flag don't raise an error!")
146 } else {
147 assert true
148 }
149}
150
151fn test_default_value() {
152 mut flag := cli.Flag{
153 flag: .float
154 name: 'flag'
155 default_value: ['1.234']
156 }
157
158 flag.parse(['-flag', '3.14158'], false) or { panic(err) }
159 mut value := flag.get_float() or { panic(err) }
160 assert value == 3.14158
161
162 flag = cli.Flag{
163 flag: .float
164 name: 'flag'
165 default_value: ['1.234']
166 }
167
168 flag.parse([''], false) or { panic(err) }
169 value = flag.get_float() or { panic(err) }
170 assert value == 1.234
171}
172