1 use clap::{Arg, ArgAction, Command};
2
3 #[test]
opt_default_no_delim()4 fn opt_default_no_delim() {
5 let m = Command::new("no_delim")
6 .arg(Arg::new("option").long("option").action(ArgAction::Set))
7 .try_get_matches_from(vec!["", "--option", "val1,val2,val3"]);
8
9 assert!(m.is_ok(), "{}", m.unwrap_err());
10 let m = m.unwrap();
11
12 assert!(m.contains_id("option"));
13 assert_eq!(
14 m.get_one::<String>("option").map(|v| v.as_str()).unwrap(),
15 "val1,val2,val3"
16 );
17 }
18
19 #[test]
opt_eq_no_delim()20 fn opt_eq_no_delim() {
21 let m = Command::new("no_delim")
22 .arg(Arg::new("option").long("option").action(ArgAction::Set))
23 .try_get_matches_from(vec!["", "--option=val1,val2,val3"]);
24
25 assert!(m.is_ok(), "{}", m.unwrap_err());
26 let m = m.unwrap();
27
28 assert!(m.contains_id("option"));
29 assert_eq!(
30 m.get_one::<String>("option").map(|v| v.as_str()).unwrap(),
31 "val1,val2,val3"
32 );
33 }
34
35 #[test]
opt_s_eq_no_delim()36 fn opt_s_eq_no_delim() {
37 let m = Command::new("no_delim")
38 .arg(Arg::new("option").short('o').action(ArgAction::Set))
39 .try_get_matches_from(vec!["", "-o=val1,val2,val3"]);
40
41 assert!(m.is_ok(), "{:?}", m.unwrap_err());
42 let m = m.unwrap();
43
44 assert!(m.contains_id("option"));
45 assert_eq!(
46 m.get_one::<String>("option").map(|v| v.as_str()).unwrap(),
47 "val1,val2,val3"
48 );
49 }
50
51 #[test]
opt_s_default_no_delim()52 fn opt_s_default_no_delim() {
53 let m = Command::new("no_delim")
54 .arg(Arg::new("option").short('o').action(ArgAction::Set))
55 .try_get_matches_from(vec!["", "-o", "val1,val2,val3"]);
56
57 assert!(m.is_ok(), "{:?}", m.unwrap_err());
58 let m = m.unwrap();
59
60 assert!(m.contains_id("option"));
61 assert_eq!(
62 m.get_one::<String>("option").map(|v| v.as_str()).unwrap(),
63 "val1,val2,val3"
64 );
65 }
66
67 #[test]
opt_s_no_space_no_delim()68 fn opt_s_no_space_no_delim() {
69 let m = Command::new("no_delim")
70 .arg(Arg::new("option").short('o').action(ArgAction::Set))
71 .try_get_matches_from(vec!["", "-o", "val1,val2,val3"]);
72
73 assert!(m.is_ok(), "{}", m.unwrap_err());
74 let m = m.unwrap();
75
76 assert!(m.contains_id("option"));
77 assert_eq!(
78 m.get_one::<String>("option").map(|v| v.as_str()).unwrap(),
79 "val1,val2,val3"
80 );
81 }
82
83 #[test]
opt_s_no_space_mult_no_delim()84 fn opt_s_no_space_mult_no_delim() {
85 let m = Command::new("no_delim")
86 .arg(
87 Arg::new("option")
88 .short('o')
89 .action(ArgAction::Set)
90 .num_args(1..),
91 )
92 .try_get_matches_from(vec!["", "-o", "val1,val2,val3"]);
93
94 assert!(m.is_ok(), "{}", m.unwrap_err());
95 let m = m.unwrap();
96
97 assert!(m.contains_id("option"));
98 assert_eq!(
99 m.get_one::<String>("option").map(|v| v.as_str()).unwrap(),
100 "val1,val2,val3"
101 );
102 }
103
104 #[test]
opt_eq_mult_def_delim()105 fn opt_eq_mult_def_delim() {
106 let m = Command::new("no_delim")
107 .arg(
108 Arg::new("option")
109 .long("opt")
110 .action(ArgAction::Set)
111 .num_args(1..)
112 .value_delimiter(','),
113 )
114 .try_get_matches_from(vec!["", "--opt=val1,val2,val3"]);
115
116 assert!(m.is_ok(), "{}", m.unwrap_err());
117 let m = m.unwrap();
118
119 assert!(m.contains_id("option"));
120 assert_eq!(
121 m.get_many::<String>("option")
122 .unwrap()
123 .map(|v| v.as_str())
124 .collect::<Vec<_>>(),
125 ["val1", "val2", "val3"]
126 );
127 }
128