119625d8cSopenharmony_ciuse clap::{Arg, ArgAction, Command};
219625d8cSopenharmony_ci
319625d8cSopenharmony_ci#[test]
419625d8cSopenharmony_cifn opt_default_no_delim() {
519625d8cSopenharmony_ci    let m = Command::new("no_delim")
619625d8cSopenharmony_ci        .arg(Arg::new("option").long("option").action(ArgAction::Set))
719625d8cSopenharmony_ci        .try_get_matches_from(vec!["", "--option", "val1,val2,val3"]);
819625d8cSopenharmony_ci
919625d8cSopenharmony_ci    assert!(m.is_ok(), "{}", m.unwrap_err());
1019625d8cSopenharmony_ci    let m = m.unwrap();
1119625d8cSopenharmony_ci
1219625d8cSopenharmony_ci    assert!(m.contains_id("option"));
1319625d8cSopenharmony_ci    assert_eq!(
1419625d8cSopenharmony_ci        m.get_one::<String>("option").map(|v| v.as_str()).unwrap(),
1519625d8cSopenharmony_ci        "val1,val2,val3"
1619625d8cSopenharmony_ci    );
1719625d8cSopenharmony_ci}
1819625d8cSopenharmony_ci
1919625d8cSopenharmony_ci#[test]
2019625d8cSopenharmony_cifn opt_eq_no_delim() {
2119625d8cSopenharmony_ci    let m = Command::new("no_delim")
2219625d8cSopenharmony_ci        .arg(Arg::new("option").long("option").action(ArgAction::Set))
2319625d8cSopenharmony_ci        .try_get_matches_from(vec!["", "--option=val1,val2,val3"]);
2419625d8cSopenharmony_ci
2519625d8cSopenharmony_ci    assert!(m.is_ok(), "{}", m.unwrap_err());
2619625d8cSopenharmony_ci    let m = m.unwrap();
2719625d8cSopenharmony_ci
2819625d8cSopenharmony_ci    assert!(m.contains_id("option"));
2919625d8cSopenharmony_ci    assert_eq!(
3019625d8cSopenharmony_ci        m.get_one::<String>("option").map(|v| v.as_str()).unwrap(),
3119625d8cSopenharmony_ci        "val1,val2,val3"
3219625d8cSopenharmony_ci    );
3319625d8cSopenharmony_ci}
3419625d8cSopenharmony_ci
3519625d8cSopenharmony_ci#[test]
3619625d8cSopenharmony_cifn opt_s_eq_no_delim() {
3719625d8cSopenharmony_ci    let m = Command::new("no_delim")
3819625d8cSopenharmony_ci        .arg(Arg::new("option").short('o').action(ArgAction::Set))
3919625d8cSopenharmony_ci        .try_get_matches_from(vec!["", "-o=val1,val2,val3"]);
4019625d8cSopenharmony_ci
4119625d8cSopenharmony_ci    assert!(m.is_ok(), "{:?}", m.unwrap_err());
4219625d8cSopenharmony_ci    let m = m.unwrap();
4319625d8cSopenharmony_ci
4419625d8cSopenharmony_ci    assert!(m.contains_id("option"));
4519625d8cSopenharmony_ci    assert_eq!(
4619625d8cSopenharmony_ci        m.get_one::<String>("option").map(|v| v.as_str()).unwrap(),
4719625d8cSopenharmony_ci        "val1,val2,val3"
4819625d8cSopenharmony_ci    );
4919625d8cSopenharmony_ci}
5019625d8cSopenharmony_ci
5119625d8cSopenharmony_ci#[test]
5219625d8cSopenharmony_cifn opt_s_default_no_delim() {
5319625d8cSopenharmony_ci    let m = Command::new("no_delim")
5419625d8cSopenharmony_ci        .arg(Arg::new("option").short('o').action(ArgAction::Set))
5519625d8cSopenharmony_ci        .try_get_matches_from(vec!["", "-o", "val1,val2,val3"]);
5619625d8cSopenharmony_ci
5719625d8cSopenharmony_ci    assert!(m.is_ok(), "{:?}", m.unwrap_err());
5819625d8cSopenharmony_ci    let m = m.unwrap();
5919625d8cSopenharmony_ci
6019625d8cSopenharmony_ci    assert!(m.contains_id("option"));
6119625d8cSopenharmony_ci    assert_eq!(
6219625d8cSopenharmony_ci        m.get_one::<String>("option").map(|v| v.as_str()).unwrap(),
6319625d8cSopenharmony_ci        "val1,val2,val3"
6419625d8cSopenharmony_ci    );
6519625d8cSopenharmony_ci}
6619625d8cSopenharmony_ci
6719625d8cSopenharmony_ci#[test]
6819625d8cSopenharmony_cifn opt_s_no_space_no_delim() {
6919625d8cSopenharmony_ci    let m = Command::new("no_delim")
7019625d8cSopenharmony_ci        .arg(Arg::new("option").short('o').action(ArgAction::Set))
7119625d8cSopenharmony_ci        .try_get_matches_from(vec!["", "-o", "val1,val2,val3"]);
7219625d8cSopenharmony_ci
7319625d8cSopenharmony_ci    assert!(m.is_ok(), "{}", m.unwrap_err());
7419625d8cSopenharmony_ci    let m = m.unwrap();
7519625d8cSopenharmony_ci
7619625d8cSopenharmony_ci    assert!(m.contains_id("option"));
7719625d8cSopenharmony_ci    assert_eq!(
7819625d8cSopenharmony_ci        m.get_one::<String>("option").map(|v| v.as_str()).unwrap(),
7919625d8cSopenharmony_ci        "val1,val2,val3"
8019625d8cSopenharmony_ci    );
8119625d8cSopenharmony_ci}
8219625d8cSopenharmony_ci
8319625d8cSopenharmony_ci#[test]
8419625d8cSopenharmony_cifn opt_s_no_space_mult_no_delim() {
8519625d8cSopenharmony_ci    let m = Command::new("no_delim")
8619625d8cSopenharmony_ci        .arg(
8719625d8cSopenharmony_ci            Arg::new("option")
8819625d8cSopenharmony_ci                .short('o')
8919625d8cSopenharmony_ci                .action(ArgAction::Set)
9019625d8cSopenharmony_ci                .num_args(1..),
9119625d8cSopenharmony_ci        )
9219625d8cSopenharmony_ci        .try_get_matches_from(vec!["", "-o", "val1,val2,val3"]);
9319625d8cSopenharmony_ci
9419625d8cSopenharmony_ci    assert!(m.is_ok(), "{}", m.unwrap_err());
9519625d8cSopenharmony_ci    let m = m.unwrap();
9619625d8cSopenharmony_ci
9719625d8cSopenharmony_ci    assert!(m.contains_id("option"));
9819625d8cSopenharmony_ci    assert_eq!(
9919625d8cSopenharmony_ci        m.get_one::<String>("option").map(|v| v.as_str()).unwrap(),
10019625d8cSopenharmony_ci        "val1,val2,val3"
10119625d8cSopenharmony_ci    );
10219625d8cSopenharmony_ci}
10319625d8cSopenharmony_ci
10419625d8cSopenharmony_ci#[test]
10519625d8cSopenharmony_cifn opt_eq_mult_def_delim() {
10619625d8cSopenharmony_ci    let m = Command::new("no_delim")
10719625d8cSopenharmony_ci        .arg(
10819625d8cSopenharmony_ci            Arg::new("option")
10919625d8cSopenharmony_ci                .long("opt")
11019625d8cSopenharmony_ci                .action(ArgAction::Set)
11119625d8cSopenharmony_ci                .num_args(1..)
11219625d8cSopenharmony_ci                .value_delimiter(','),
11319625d8cSopenharmony_ci        )
11419625d8cSopenharmony_ci        .try_get_matches_from(vec!["", "--opt=val1,val2,val3"]);
11519625d8cSopenharmony_ci
11619625d8cSopenharmony_ci    assert!(m.is_ok(), "{}", m.unwrap_err());
11719625d8cSopenharmony_ci    let m = m.unwrap();
11819625d8cSopenharmony_ci
11919625d8cSopenharmony_ci    assert!(m.contains_id("option"));
12019625d8cSopenharmony_ci    assert_eq!(
12119625d8cSopenharmony_ci        m.get_many::<String>("option")
12219625d8cSopenharmony_ci            .unwrap()
12319625d8cSopenharmony_ci            .map(|v| v.as_str())
12419625d8cSopenharmony_ci            .collect::<Vec<_>>(),
12519625d8cSopenharmony_ci        ["val1", "val2", "val3"]
12619625d8cSopenharmony_ci    );
12719625d8cSopenharmony_ci}
128