Skip to content

Commit b03eff6

Browse files
committed
tests(Default Values If): adds tests for the new defualt_value_if[s] methods
1 parent e20009d commit b03eff6

File tree

3 files changed

+319
-36
lines changed

3 files changed

+319
-36
lines changed

tests/default_vals.rs

+319
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,319 @@
1+
extern crate clap;
2+
extern crate regex;
3+
4+
include!("../clap-test.rs");
5+
6+
use clap::{App, Arg};
7+
8+
#[test]
9+
fn opts() {
10+
let r = App::new("df")
11+
.arg( Arg::from_usage("-o [opt] 'some opt'")
12+
.default_value("default"))
13+
.get_matches_from_safe(vec![""]);
14+
assert!(r.is_ok());
15+
let m = r.unwrap();
16+
assert!(m.is_present("o"));
17+
assert_eq!(m.value_of("o").unwrap(), "default");
18+
}
19+
20+
#[test]
21+
fn opt_user_override() {
22+
let r = App::new("df")
23+
.arg( Arg::from_usage("--opt [FILE] 'some arg'")
24+
.default_value("default"))
25+
.get_matches_from_safe(vec!["", "--opt", "value"]);
26+
assert!(r.is_ok());
27+
let m = r.unwrap();
28+
assert!(m.is_present("opt"));
29+
assert_eq!(m.value_of("opt").unwrap(), "value");
30+
}
31+
32+
#[test]
33+
fn positionals() {
34+
let r = App::new("df")
35+
.arg( Arg::from_usage("[arg] 'some opt'")
36+
.default_value("default"))
37+
.get_matches_from_safe(vec![""]);
38+
assert!(r.is_ok());
39+
let m = r.unwrap();
40+
assert!(m.is_present("arg"));
41+
assert_eq!(m.value_of("arg").unwrap(), "default");
42+
}
43+
44+
#[test]
45+
fn positional_user_override() {
46+
let r = App::new("df")
47+
.arg( Arg::from_usage("[arg] 'some arg'")
48+
.default_value("default"))
49+
.get_matches_from_safe(vec!["", "value"]);
50+
assert!(r.is_ok());
51+
let m = r.unwrap();
52+
assert!(m.is_present("arg"));
53+
assert_eq!(m.value_of("arg").unwrap(), "value");
54+
}
55+
56+
// --- Default if arg is present
57+
58+
#[test]
59+
fn default_if_arg_present_no_default() {
60+
let r = App::new("df")
61+
.arg( Arg::from_usage("--opt [FILE] 'some arg'"))
62+
.arg( Arg::from_usage("[arg] 'some arg'")
63+
.default_value_if("opt", None, "default"))
64+
.get_matches_from_safe(vec!["", "--opt", "some"]);
65+
assert!(r.is_ok());
66+
let m = r.unwrap();
67+
assert!(m.is_present("arg"));
68+
assert_eq!(m.value_of("arg").unwrap(), "default");
69+
}
70+
71+
#[test]
72+
fn default_if_arg_present_no_default_user_override() {
73+
let r = App::new("df")
74+
.arg( Arg::from_usage("--opt [FILE] 'some arg'"))
75+
.arg( Arg::from_usage("[arg] 'some arg'")
76+
.default_value_if("opt", None, "default"))
77+
.get_matches_from_safe(vec!["", "--opt", "some", "other"]);
78+
assert!(r.is_ok());
79+
let m = r.unwrap();
80+
assert!(m.is_present("arg"));
81+
assert_eq!(m.value_of("arg").unwrap(), "other");
82+
}
83+
84+
#[test]
85+
fn default_if_arg_present_no_arg_with_default() {
86+
let r = App::new("df")
87+
.arg( Arg::from_usage("--opt [FILE] 'some arg'"))
88+
.arg( Arg::from_usage("[arg] 'some arg'")
89+
.default_value("first")
90+
.default_value_if("opt", None, "default"))
91+
.get_matches_from_safe(vec![""]);
92+
assert!(r.is_ok());
93+
let m = r.unwrap();
94+
assert!(m.is_present("arg"));
95+
assert_eq!(m.value_of("arg").unwrap(), "first");
96+
}
97+
98+
#[test]
99+
fn default_if_arg_present_with_default() {
100+
let r = App::new("df")
101+
.arg( Arg::from_usage("--opt [FILE] 'some arg'"))
102+
.arg( Arg::from_usage("[arg] 'some arg'")
103+
.default_value("first")
104+
.default_value_if("opt", None, "default"))
105+
.get_matches_from_safe(vec!["", "--opt", "some"]);
106+
assert!(r.is_ok());
107+
let m = r.unwrap();
108+
assert!(m.is_present("arg"));
109+
assert_eq!(m.value_of("arg").unwrap(), "default");
110+
}
111+
112+
#[test]
113+
fn default_if_arg_present_with_default_user_override() {
114+
let r = App::new("df")
115+
.arg( Arg::from_usage("--opt [FILE] 'some arg'"))
116+
.arg( Arg::from_usage("[arg] 'some arg'")
117+
.default_value("first")
118+
.default_value_if("opt", None, "default"))
119+
.get_matches_from_safe(vec!["", "--opt", "some", "other"]);
120+
assert!(r.is_ok());
121+
let m = r.unwrap();
122+
assert!(m.is_present("arg"));
123+
assert_eq!(m.value_of("arg").unwrap(), "other");
124+
}
125+
126+
#[test]
127+
fn default_if_arg_present_no_arg_with_default_user_override() {
128+
let r = App::new("df")
129+
.arg( Arg::from_usage("--opt [FILE] 'some arg'"))
130+
.arg( Arg::from_usage("[arg] 'some arg'")
131+
.default_value("first")
132+
.default_value_if("opt", None, "default"))
133+
.get_matches_from_safe(vec!["", "other"]);
134+
assert!(r.is_ok());
135+
let m = r.unwrap();
136+
assert!(m.is_present("arg"));
137+
assert_eq!(m.value_of("arg").unwrap(), "other");
138+
}
139+
140+
// --- Default if arg with specific value
141+
142+
#[test]
143+
fn default_if_arg_present_with_value_no_default() {
144+
let r = App::new("df")
145+
.arg( Arg::from_usage("--opt [FILE] 'some arg'"))
146+
.arg( Arg::from_usage("[arg] 'some arg'")
147+
.default_value_if("opt", Some("value"), "default"))
148+
.get_matches_from_safe(vec!["", "--opt", "value"]);
149+
assert!(r.is_ok());
150+
let m = r.unwrap();
151+
assert!(m.is_present("arg"));
152+
assert_eq!(m.value_of("arg").unwrap(), "default");
153+
}
154+
155+
#[test]
156+
fn default_if_arg_present_with_value_no_default_fail() {
157+
let r = App::new("df")
158+
.arg( Arg::from_usage("--opt [FILE] 'some arg'"))
159+
.arg( Arg::from_usage("[arg] 'some arg'")
160+
.default_value_if("opt", Some("value"), "default"))
161+
.get_matches_from_safe(vec!["", "--opt", "other"]);
162+
assert!(r.is_ok());
163+
let m = r.unwrap();
164+
assert!(!m.is_present("arg"));
165+
//assert_eq!(m.value_of("arg").unwrap(), "default");
166+
}
167+
168+
#[test]
169+
fn default_if_arg_present_with_value_no_default_user_override() {
170+
let r = App::new("df")
171+
.arg( Arg::from_usage("--opt [FILE] 'some arg'"))
172+
.arg( Arg::from_usage("[arg] 'some arg'")
173+
.default_value_if("opt", Some("some"), "default"))
174+
.get_matches_from_safe(vec!["", "--opt", "some", "other"]);
175+
assert!(r.is_ok());
176+
let m = r.unwrap();
177+
assert!(m.is_present("arg"));
178+
assert_eq!(m.value_of("arg").unwrap(), "other");
179+
}
180+
181+
#[test]
182+
fn default_if_arg_present_with_value_no_arg_with_default() {
183+
let r = App::new("df")
184+
.arg( Arg::from_usage("--opt [FILE] 'some arg'"))
185+
.arg( Arg::from_usage("[arg] 'some arg'")
186+
.default_value("first")
187+
.default_value_if("opt", Some("some"), "default"))
188+
.get_matches_from_safe(vec![""]);
189+
assert!(r.is_ok());
190+
let m = r.unwrap();
191+
assert!(m.is_present("arg"));
192+
assert_eq!(m.value_of("arg").unwrap(), "first");
193+
}
194+
195+
#[test]
196+
fn default_if_arg_present_with_value_no_arg_with_default_fail() {
197+
let r = App::new("df")
198+
.arg( Arg::from_usage("--opt [FILE] 'some arg'"))
199+
.arg( Arg::from_usage("[arg] 'some arg'")
200+
.default_value("first")
201+
.default_value_if("opt", Some("some"), "default"))
202+
.get_matches_from_safe(vec!["", "--opt", "other"]);
203+
assert!(r.is_ok());
204+
let m = r.unwrap();
205+
assert!(m.is_present("arg"));
206+
assert_eq!(m.value_of("arg").unwrap(), "first");
207+
}
208+
209+
#[test]
210+
fn default_if_arg_present_with_value_with_default() {
211+
let r = App::new("df")
212+
.arg( Arg::from_usage("--opt [FILE] 'some arg'"))
213+
.arg( Arg::from_usage("[arg] 'some arg'")
214+
.default_value("first")
215+
.default_value_if("opt", Some("some"), "default"))
216+
.get_matches_from_safe(vec!["", "--opt", "some"]);
217+
assert!(r.is_ok());
218+
let m = r.unwrap();
219+
assert!(m.is_present("arg"));
220+
assert_eq!(m.value_of("arg").unwrap(), "default");
221+
}
222+
223+
#[test]
224+
fn default_if_arg_present_with_value_with_default_user_override() {
225+
let r = App::new("df")
226+
.arg( Arg::from_usage("--opt [FILE] 'some arg'"))
227+
.arg( Arg::from_usage("[arg] 'some arg'")
228+
.default_value("first")
229+
.default_value_if("opt", Some("some"), "default"))
230+
.get_matches_from_safe(vec!["", "--opt", "some", "other"]);
231+
assert!(r.is_ok());
232+
let m = r.unwrap();
233+
assert!(m.is_present("arg"));
234+
assert_eq!(m.value_of("arg").unwrap(), "other");
235+
}
236+
237+
#[test]
238+
fn default_if_arg_present_no_arg_with_value_with_default_user_override() {
239+
let r = App::new("df")
240+
.arg( Arg::from_usage("--opt [FILE] 'some arg'"))
241+
.arg( Arg::from_usage("[arg] 'some arg'")
242+
.default_value("first")
243+
.default_value_if("opt", Some("some"), "default"))
244+
.get_matches_from_safe(vec!["", "other"]);
245+
assert!(r.is_ok());
246+
let m = r.unwrap();
247+
assert!(m.is_present("arg"));
248+
assert_eq!(m.value_of("arg").unwrap(), "other");
249+
}
250+
251+
#[test]
252+
fn default_if_arg_present_no_arg_with_value_with_default_user_override_fail() {
253+
let r = App::new("df")
254+
.arg( Arg::from_usage("--opt [FILE] 'some arg'"))
255+
.arg( Arg::from_usage("[arg] 'some arg'")
256+
.default_value("first")
257+
.default_value_if("opt", Some("some"), "default"))
258+
.get_matches_from_safe(vec!["", "--opt", "value", "other"]);
259+
assert!(r.is_ok());
260+
let m = r.unwrap();
261+
assert!(m.is_present("arg"));
262+
assert_eq!(m.value_of("arg").unwrap(), "other");
263+
}
264+
265+
// Multiple conditions
266+
267+
#[test]
268+
fn default_ifs_arg_present() {
269+
let r = App::new("df")
270+
.arg( Arg::from_usage("--opt [FILE] 'some arg'"))
271+
.arg( Arg::from_usage("--flag 'some arg'"))
272+
.arg( Arg::from_usage("[arg] 'some arg'")
273+
.default_value("first")
274+
.default_value_ifs(&[
275+
("opt", Some("some"), "default"),
276+
("flag", None, "flg"),
277+
]))
278+
.get_matches_from_safe(vec!["", "--flag"]);
279+
assert!(r.is_ok());
280+
let m = r.unwrap();
281+
assert!(m.is_present("arg"));
282+
assert_eq!(m.value_of("arg").unwrap(), "flg");
283+
}
284+
285+
#[test]
286+
fn default_ifs_arg_present_user_override() {
287+
let r = App::new("df")
288+
.arg( Arg::from_usage("--opt [FILE] 'some arg'"))
289+
.arg( Arg::from_usage("--flag 'some arg'"))
290+
.arg( Arg::from_usage("[arg] 'some arg'")
291+
.default_value("first")
292+
.default_value_ifs(&[
293+
("opt", Some("some"), "default"),
294+
("flag", None, "flg"),
295+
]))
296+
.get_matches_from_safe(vec!["", "--flag", "value"]);
297+
assert!(r.is_ok());
298+
let m = r.unwrap();
299+
assert!(m.is_present("arg"));
300+
assert_eq!(m.value_of("arg").unwrap(), "value");
301+
}
302+
303+
#[test]
304+
fn default_ifs_arg_present_order() {
305+
let r = App::new("df")
306+
.arg( Arg::from_usage("--opt [FILE] 'some arg'"))
307+
.arg( Arg::from_usage("--flag 'some arg'"))
308+
.arg( Arg::from_usage("[arg] 'some arg'")
309+
.default_value("first")
310+
.default_value_ifs(&[
311+
("opt", Some("some"), "default"),
312+
("flag", None, "flg"),
313+
]))
314+
.get_matches_from_safe(vec!["", "--opt=some", "--flag"]);
315+
assert!(r.is_ok());
316+
let m = r.unwrap();
317+
assert!(m.is_present("arg"));
318+
assert_eq!(m.value_of("arg").unwrap(), "default");
319+
}

tests/opts.rs

-12
Original file line numberDiff line numberDiff line change
@@ -148,18 +148,6 @@ fn opts_using_mixed2() {
148148
assert_eq!(m.value_of("color").unwrap(), "other");
149149
}
150150

151-
#[test]
152-
fn default_values_default() {
153-
let r = App::new("df")
154-
.arg( Arg::from_usage("-o [opt] 'some opt'")
155-
.default_value("default"))
156-
.get_matches_from_safe(vec![""]);
157-
assert!(r.is_ok());
158-
let m = r.unwrap();
159-
assert!(m.is_present("o"));
160-
assert_eq!(m.value_of("o").unwrap(), "default");
161-
}
162-
163151
#[test]
164152
fn default_values_user_value() {
165153
let r = App::new("df")

tests/positionals.rs

-24
Original file line numberDiff line numberDiff line change
@@ -153,30 +153,6 @@ fn positional_hyphen_does_not_panic() {
153153
.get_matches_from(vec!["test", "-"]);
154154
}
155155

156-
#[test]
157-
fn default_values_default() {
158-
let r = App::new("df")
159-
.arg( Arg::from_usage("[arg] 'some opt'")
160-
.default_value("default"))
161-
.get_matches_from_safe(vec![""]);
162-
assert!(r.is_ok());
163-
let m = r.unwrap();
164-
assert!(m.is_present("arg"));
165-
assert_eq!(m.value_of("arg").unwrap(), "default");
166-
}
167-
168-
#[test]
169-
fn default_values_user_value() {
170-
let r = App::new("df")
171-
.arg( Arg::from_usage("[arg] 'some arg'")
172-
.default_value("default"))
173-
.get_matches_from_safe(vec!["", "value"]);
174-
assert!(r.is_ok());
175-
let m = r.unwrap();
176-
assert!(m.is_present("arg"));
177-
assert_eq!(m.value_of("arg").unwrap(), "value");
178-
}
179-
180156
#[test]
181157
fn single_positional_usage_string() {
182158
let m = App::new("test").arg_from_usage("[FILE] 'some file'").get_matches_from(vec!["test"]);

0 commit comments

Comments
 (0)