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