119625d8cSopenharmony_ciuse clap::{Arg, ArgAction, Command}; 219625d8cSopenharmony_ci 319625d8cSopenharmony_ci#[test] 419625d8cSopenharmony_cifn indices_mult_opts() { 519625d8cSopenharmony_ci let m = Command::new("ind") 619625d8cSopenharmony_ci .args_override_self(true) 719625d8cSopenharmony_ci .arg( 819625d8cSopenharmony_ci Arg::new("exclude") 919625d8cSopenharmony_ci .short('e') 1019625d8cSopenharmony_ci .action(ArgAction::Set) 1119625d8cSopenharmony_ci .num_args(1..) 1219625d8cSopenharmony_ci .action(ArgAction::Append), 1319625d8cSopenharmony_ci ) 1419625d8cSopenharmony_ci .arg( 1519625d8cSopenharmony_ci Arg::new("include") 1619625d8cSopenharmony_ci .short('i') 1719625d8cSopenharmony_ci .action(ArgAction::Set) 1819625d8cSopenharmony_ci .num_args(1..), 1919625d8cSopenharmony_ci ) 2019625d8cSopenharmony_ci .try_get_matches_from(vec!["ind", "-e", "A", "B", "-i", "B", "C", "-e", "C"]) 2119625d8cSopenharmony_ci .unwrap(); 2219625d8cSopenharmony_ci 2319625d8cSopenharmony_ci assert_eq!( 2419625d8cSopenharmony_ci m.indices_of("exclude").unwrap().collect::<Vec<_>>(), 2519625d8cSopenharmony_ci [2, 3, 8] 2619625d8cSopenharmony_ci ); 2719625d8cSopenharmony_ci assert_eq!(m.indices_of("include").unwrap().collect::<Vec<_>>(), [5, 6]); 2819625d8cSopenharmony_ci} 2919625d8cSopenharmony_ci 3019625d8cSopenharmony_ci#[test] 3119625d8cSopenharmony_cifn index_mult_opts() { 3219625d8cSopenharmony_ci let m = Command::new("ind") 3319625d8cSopenharmony_ci .args_override_self(true) 3419625d8cSopenharmony_ci .arg( 3519625d8cSopenharmony_ci Arg::new("exclude") 3619625d8cSopenharmony_ci .short('e') 3719625d8cSopenharmony_ci .action(ArgAction::Set) 3819625d8cSopenharmony_ci .num_args(1..) 3919625d8cSopenharmony_ci .action(ArgAction::Append), 4019625d8cSopenharmony_ci ) 4119625d8cSopenharmony_ci .arg( 4219625d8cSopenharmony_ci Arg::new("include") 4319625d8cSopenharmony_ci .short('i') 4419625d8cSopenharmony_ci .action(ArgAction::Set) 4519625d8cSopenharmony_ci .num_args(1..), 4619625d8cSopenharmony_ci ) 4719625d8cSopenharmony_ci .try_get_matches_from(vec!["ind", "-e", "A", "B", "-i", "B", "C", "-e", "C"]) 4819625d8cSopenharmony_ci .unwrap(); 4919625d8cSopenharmony_ci 5019625d8cSopenharmony_ci assert_eq!(m.index_of("exclude"), Some(2)); 5119625d8cSopenharmony_ci assert_eq!(m.index_of("include"), Some(5)); 5219625d8cSopenharmony_ci} 5319625d8cSopenharmony_ci 5419625d8cSopenharmony_ci#[test] 5519625d8cSopenharmony_cifn index_flag() { 5619625d8cSopenharmony_ci let m = Command::new("ind") 5719625d8cSopenharmony_ci .args_override_self(true) 5819625d8cSopenharmony_ci .arg(Arg::new("exclude").short('e').action(ArgAction::SetTrue)) 5919625d8cSopenharmony_ci .arg(Arg::new("include").short('i').action(ArgAction::SetTrue)) 6019625d8cSopenharmony_ci .try_get_matches_from(vec!["ind", "-e", "-i"]) 6119625d8cSopenharmony_ci .unwrap(); 6219625d8cSopenharmony_ci 6319625d8cSopenharmony_ci assert_eq!(m.index_of("exclude"), Some(1)); 6419625d8cSopenharmony_ci assert_eq!(m.index_of("include"), Some(2)); 6519625d8cSopenharmony_ci} 6619625d8cSopenharmony_ci 6719625d8cSopenharmony_ci#[test] 6819625d8cSopenharmony_cifn index_flags() { 6919625d8cSopenharmony_ci let m = Command::new("ind") 7019625d8cSopenharmony_ci .args_override_self(true) 7119625d8cSopenharmony_ci .arg(Arg::new("exclude").short('e').action(ArgAction::SetTrue)) 7219625d8cSopenharmony_ci .arg(Arg::new("include").short('i').action(ArgAction::SetTrue)) 7319625d8cSopenharmony_ci .try_get_matches_from(vec!["ind", "-e", "-i", "-e", "-e", "-i"]) 7419625d8cSopenharmony_ci .unwrap(); 7519625d8cSopenharmony_ci 7619625d8cSopenharmony_ci assert_eq!(m.index_of("exclude"), Some(4)); 7719625d8cSopenharmony_ci assert_eq!(m.index_of("include"), Some(5)); 7819625d8cSopenharmony_ci} 7919625d8cSopenharmony_ci 8019625d8cSopenharmony_ci#[test] 8119625d8cSopenharmony_cifn indices_mult_flags() { 8219625d8cSopenharmony_ci let m = Command::new("ind") 8319625d8cSopenharmony_ci .args_override_self(true) 8419625d8cSopenharmony_ci .arg(Arg::new("exclude").short('e').action(ArgAction::SetTrue)) 8519625d8cSopenharmony_ci .arg(Arg::new("include").short('i').action(ArgAction::SetTrue)) 8619625d8cSopenharmony_ci .try_get_matches_from(vec!["ind", "-e", "-i", "-e", "-e", "-i"]) 8719625d8cSopenharmony_ci .unwrap(); 8819625d8cSopenharmony_ci 8919625d8cSopenharmony_ci assert_eq!(m.indices_of("exclude").unwrap().collect::<Vec<_>>(), [4]); 9019625d8cSopenharmony_ci assert_eq!(m.indices_of("include").unwrap().collect::<Vec<_>>(), [5]); 9119625d8cSopenharmony_ci} 9219625d8cSopenharmony_ci 9319625d8cSopenharmony_ci#[test] 9419625d8cSopenharmony_cifn indices_mult_flags_combined() { 9519625d8cSopenharmony_ci let m = Command::new("ind") 9619625d8cSopenharmony_ci .args_override_self(true) 9719625d8cSopenharmony_ci .arg(Arg::new("exclude").short('e').action(ArgAction::SetTrue)) 9819625d8cSopenharmony_ci .arg(Arg::new("include").short('i').action(ArgAction::SetTrue)) 9919625d8cSopenharmony_ci .try_get_matches_from(vec!["ind", "-eieei"]) 10019625d8cSopenharmony_ci .unwrap(); 10119625d8cSopenharmony_ci 10219625d8cSopenharmony_ci assert_eq!(m.indices_of("exclude").unwrap().collect::<Vec<_>>(), [4]); 10319625d8cSopenharmony_ci assert_eq!(m.indices_of("include").unwrap().collect::<Vec<_>>(), [5]); 10419625d8cSopenharmony_ci} 10519625d8cSopenharmony_ci 10619625d8cSopenharmony_ci#[test] 10719625d8cSopenharmony_cifn indices_mult_flags_opt_combined() { 10819625d8cSopenharmony_ci let m = Command::new("ind") 10919625d8cSopenharmony_ci .args_override_self(true) 11019625d8cSopenharmony_ci .arg(Arg::new("exclude").short('e').action(ArgAction::SetTrue)) 11119625d8cSopenharmony_ci .arg(Arg::new("include").short('i').action(ArgAction::SetTrue)) 11219625d8cSopenharmony_ci .arg(Arg::new("option").short('o').action(ArgAction::Set)) 11319625d8cSopenharmony_ci .try_get_matches_from(vec!["ind", "-eieeio", "val"]) 11419625d8cSopenharmony_ci .unwrap(); 11519625d8cSopenharmony_ci 11619625d8cSopenharmony_ci assert_eq!(m.indices_of("exclude").unwrap().collect::<Vec<_>>(), [4]); 11719625d8cSopenharmony_ci assert_eq!(m.indices_of("include").unwrap().collect::<Vec<_>>(), [5]); 11819625d8cSopenharmony_ci assert_eq!(m.indices_of("option").unwrap().collect::<Vec<_>>(), [7]); 11919625d8cSopenharmony_ci} 12019625d8cSopenharmony_ci 12119625d8cSopenharmony_ci#[test] 12219625d8cSopenharmony_cifn indices_mult_flags_opt_combined_eq() { 12319625d8cSopenharmony_ci let m = Command::new("ind") 12419625d8cSopenharmony_ci .args_override_self(true) 12519625d8cSopenharmony_ci .arg(Arg::new("exclude").short('e').action(ArgAction::SetTrue)) 12619625d8cSopenharmony_ci .arg(Arg::new("include").short('i').action(ArgAction::SetTrue)) 12719625d8cSopenharmony_ci .arg(Arg::new("option").short('o').action(ArgAction::Set)) 12819625d8cSopenharmony_ci .try_get_matches_from(vec!["ind", "-eieeio=val"]) 12919625d8cSopenharmony_ci .unwrap(); 13019625d8cSopenharmony_ci 13119625d8cSopenharmony_ci assert_eq!(m.indices_of("exclude").unwrap().collect::<Vec<_>>(), [4]); 13219625d8cSopenharmony_ci assert_eq!(m.indices_of("include").unwrap().collect::<Vec<_>>(), [5]); 13319625d8cSopenharmony_ci assert_eq!(m.indices_of("option").unwrap().collect::<Vec<_>>(), [7]); 13419625d8cSopenharmony_ci} 13519625d8cSopenharmony_ci 13619625d8cSopenharmony_ci#[test] 13719625d8cSopenharmony_cifn indices_mult_opt_value_delim_eq() { 13819625d8cSopenharmony_ci let m = Command::new("myapp") 13919625d8cSopenharmony_ci .args_override_self(true) 14019625d8cSopenharmony_ci .arg( 14119625d8cSopenharmony_ci Arg::new("option") 14219625d8cSopenharmony_ci .short('o') 14319625d8cSopenharmony_ci .action(ArgAction::Set) 14419625d8cSopenharmony_ci .value_delimiter(',') 14519625d8cSopenharmony_ci .num_args(1..), 14619625d8cSopenharmony_ci ) 14719625d8cSopenharmony_ci .try_get_matches_from(vec!["myapp", "-o=val1,val2,val3"]) 14819625d8cSopenharmony_ci .unwrap(); 14919625d8cSopenharmony_ci assert_eq!( 15019625d8cSopenharmony_ci m.indices_of("option").unwrap().collect::<Vec<_>>(), 15119625d8cSopenharmony_ci [2, 3, 4] 15219625d8cSopenharmony_ci ); 15319625d8cSopenharmony_ci} 15419625d8cSopenharmony_ci 15519625d8cSopenharmony_ci#[test] 15619625d8cSopenharmony_cifn indices_mult_opt_value_no_delim_eq() { 15719625d8cSopenharmony_ci let m = Command::new("myapp") 15819625d8cSopenharmony_ci .args_override_self(true) 15919625d8cSopenharmony_ci .arg( 16019625d8cSopenharmony_ci Arg::new("option") 16119625d8cSopenharmony_ci .short('o') 16219625d8cSopenharmony_ci .action(ArgAction::Set) 16319625d8cSopenharmony_ci .num_args(1..), 16419625d8cSopenharmony_ci ) 16519625d8cSopenharmony_ci .try_get_matches_from(vec!["myapp", "-o=val1,val2,val3"]) 16619625d8cSopenharmony_ci .unwrap(); 16719625d8cSopenharmony_ci assert_eq!(m.indices_of("option").unwrap().collect::<Vec<_>>(), [2]); 16819625d8cSopenharmony_ci} 16919625d8cSopenharmony_ci 17019625d8cSopenharmony_ci#[test] 17119625d8cSopenharmony_cifn indices_mult_opt_mult_flag() { 17219625d8cSopenharmony_ci let m = Command::new("myapp") 17319625d8cSopenharmony_ci .args_override_self(true) 17419625d8cSopenharmony_ci .arg(Arg::new("option").short('o').action(ArgAction::Append)) 17519625d8cSopenharmony_ci .arg(Arg::new("flag").short('f').action(ArgAction::SetTrue)) 17619625d8cSopenharmony_ci .try_get_matches_from(vec!["myapp", "-o", "val1", "-f", "-o", "val2", "-f"]) 17719625d8cSopenharmony_ci .unwrap(); 17819625d8cSopenharmony_ci 17919625d8cSopenharmony_ci assert_eq!(m.indices_of("option").unwrap().collect::<Vec<_>>(), [2, 5]); 18019625d8cSopenharmony_ci assert_eq!(m.indices_of("flag").unwrap().collect::<Vec<_>>(), [6]); 18119625d8cSopenharmony_ci} 182