blob: 678b51d9a18acde3b5e240877d428bff80c15bd6 [file] [log] [blame]
Alexander Kuvaev0cfecd32015-08-27 21:03:451extern crate clap;
2
Kevin Kf17e1502016-01-25 20:56:373use clap::{App, Arg, ArgSettings};
Alexander Kuvaev0cfecd32015-08-27 21:03:454
5#[test]
6fn flag_using_short() {
7 let m = App::new("flag")
Kevin K0031d782016-01-21 06:48:308 .args(&[
Alexander Kuvaev0cfecd32015-08-27 21:03:459 Arg::from_usage("-f, --flag 'some flag'"),
10 Arg::from_usage("-c, --color 'some other flag'")
11 ])
Kevin Kf17e1502016-01-25 20:56:3712 .get_matches_from(vec!["", "-f", "-c"]);
Alexander Kuvaev0cfecd32015-08-27 21:03:4513 assert!(m.is_present("flag"));
14 assert!(m.is_present("color"));
15}
16
17#[test]
Kevin K07dfdd02016-02-02 12:43:5318fn lots_o_flags_sep() {
19 let r = App::new("opts")
20 .arg(
21 Arg::from_usage("-o... 'some flag'"),
22 )
Kevin Kefb3b282018-01-25 02:08:1423 .get_matches_from_safe(vec!["",
Kevin K07dfdd02016-02-02 12:43:5324 "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o",
25 "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o",
26 "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o",
27 "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o",
28 "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o",
29 "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o",
30 "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o",
31 "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o",
32 "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o",
33 "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o",
34 "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o",
35 "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o",
36 "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o",
37 "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o",
38 "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o",
39 "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o",
40 "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o",
41 "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o",
42 "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o",
43 "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o",
44 "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o",
45 "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o",
46 "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o",
47 "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o",
48 "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o",
49 "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o",
50 "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o", "-o",
51 ]);
52 assert!(r.is_ok());
53 let m = r.unwrap();
54 assert!(m.is_present("o"));
55 assert_eq!(m.occurrences_of("o"), 297); // i.e. more than u8
56}
57
58#[test]
59fn lots_o_flags_combined() {
60 let r = App::new("opts")
61 .arg(
62 Arg::from_usage("-o... 'some flag'"),
63 )
Kevin Kefb3b282018-01-25 02:08:1464 .get_matches_from_safe(vec!["",
Kevin K07dfdd02016-02-02 12:43:5365 "-oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo",
66 "-oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo",
67 "-oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo",
68 "-oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo",
69 "-ooooooooooooooooooooooooooooooooooooooooo",
70 ]);
71 assert!(r.is_ok());
72 let m = r.unwrap();
73 assert!(m.is_present("o"));
74 assert_eq!(m.occurrences_of("o"), 297); // i.e. more than u8
75}
76
77#[test]
Alexander Kuvaev0cfecd32015-08-27 21:03:4578fn flag_using_long() {
79 let m = App::new("flag")
Kevin K0031d782016-01-21 06:48:3080 .args(&[
Alexander Kuvaev0cfecd32015-08-27 21:03:4581 Arg::from_usage("--flag 'some flag'"),
82 Arg::from_usage("--color 'some other flag'")
83 ])
Kevin Kf17e1502016-01-25 20:56:3784 .get_matches_from(vec!["", "--flag", "--color"]);
Alexander Kuvaev0cfecd32015-08-27 21:03:4585 assert!(m.is_present("flag"));
86 assert!(m.is_present("color"));
87}
88
89#[test]
90fn flag_using_mixed() {
91 let m = App::new("flag")
Kevin K0031d782016-01-21 06:48:3092 .args(&[
Alexander Kuvaev0cfecd32015-08-27 21:03:4593 Arg::from_usage("-f, --flag 'some flag'"),
94 Arg::from_usage("-c, --color 'some other flag'")
95 ])
Kevin Kf17e1502016-01-25 20:56:3796 .get_matches_from(vec!["", "-f", "--color"]);
Alexander Kuvaev0cfecd32015-08-27 21:03:4597 assert!(m.is_present("flag"));
98 assert!(m.is_present("color"));
99
100 let m = App::new("flag")
Kevin K0031d782016-01-21 06:48:30101 .args(&[
Alexander Kuvaev0cfecd32015-08-27 21:03:45102 Arg::from_usage("-f, --flag 'some flag'"),
103 Arg::from_usage("-c, --color 'some other flag'")
104 ])
Kevin Kf17e1502016-01-25 20:56:37105 .get_matches_from(vec!["", "--flag", "-c"]);
Alexander Kuvaev0cfecd32015-08-27 21:03:45106 assert!(m.is_present("flag"));
107 assert!(m.is_present("color"));
108}
109
110#[test]
111fn multiple_flags_in_single() {
112 let m = App::new("multe_flags")
Kevin K0031d782016-01-21 06:48:30113 .args(&[
Alexander Kuvaev0cfecd32015-08-27 21:03:45114 Arg::from_usage("-f, --flag 'some flag'"),
115 Arg::from_usage("-c, --color 'some other flag'"),
116 Arg::from_usage("-d, --debug 'another other flag'")
117 ])
Kevin Kf17e1502016-01-25 20:56:37118 .get_matches_from(vec!["", "-fcd"]);
Alexander Kuvaev0cfecd32015-08-27 21:03:45119 assert!(m.is_present("flag"));
120 assert!(m.is_present("color"));
121 assert!(m.is_present("debug"));
122}
123
124#[test]
Alexander Kuvaev0cfecd32015-08-27 21:03:45125fn short_flag_misspel() {
Kevin Kf17e1502016-01-25 20:56:37126 let a = Arg::from_usage("-f1, --flag 'some flag'");
Kevin Kefb3b282018-01-25 02:08:14127 assert_eq!(a.name, "flag");
128 assert_eq!(a.short.unwrap(), 'f');
129 assert_eq!(a.long.unwrap(), "flag");
130 assert_eq!(a.help.unwrap(), "some flag");
Kevin Kf17e1502016-01-25 20:56:37131 assert!(!a.is_set(ArgSettings::Multiple));
Kevin Kefb3b282018-01-25 02:08:14132 assert!(a.val_names.is_none());
133 assert!(a.num_vals.is_none());
Alexander Kuvaev0cfecd32015-08-27 21:03:45134}
135
136#[test]
Alexander Kuvaev0cfecd32015-08-27 21:03:45137fn short_flag_name_missing() {
Kevin Kf17e1502016-01-25 20:56:37138 let a = Arg::from_usage("-f 'some flag'");
Kevin Kefb3b282018-01-25 02:08:14139 assert_eq!(a.name, "f");
140 assert_eq!(a.short.unwrap(), 'f');
141 assert!(a.long.is_none());
142 assert_eq!(a.help.unwrap(), "some flag");
Kevin Kf17e1502016-01-25 20:56:37143 assert!(!a.is_set(ArgSettings::Multiple));
Kevin Kefb3b282018-01-25 02:08:14144 assert!(a.val_names.is_none());
145 assert!(a.num_vals.is_none());
Kevin Kf17e1502016-01-25 20:56:37146
147}