119625d8cSopenharmony_ciuse clap::{builder::PossibleValue, error::ErrorKind, Arg, ArgAction, Command}; 219625d8cSopenharmony_ci 319625d8cSopenharmony_ci#[cfg(feature = "error-context")] 419625d8cSopenharmony_ciuse super::utils; 519625d8cSopenharmony_ci 619625d8cSopenharmony_ci#[test] 719625d8cSopenharmony_cifn possible_values_of_positional() { 819625d8cSopenharmony_ci let m = Command::new("possible_values") 919625d8cSopenharmony_ci .arg(Arg::new("positional").index(1).value_parser(["test123"])) 1019625d8cSopenharmony_ci .try_get_matches_from(vec!["myprog", "test123"]); 1119625d8cSopenharmony_ci 1219625d8cSopenharmony_ci assert!(m.is_ok(), "{}", m.unwrap_err()); 1319625d8cSopenharmony_ci let m = m.unwrap(); 1419625d8cSopenharmony_ci 1519625d8cSopenharmony_ci assert!(m.contains_id("positional")); 1619625d8cSopenharmony_ci assert_eq!( 1719625d8cSopenharmony_ci m.get_one::<String>("positional").map(|v| v.as_str()), 1819625d8cSopenharmony_ci Some("test123") 1919625d8cSopenharmony_ci ); 2019625d8cSopenharmony_ci} 2119625d8cSopenharmony_ci 2219625d8cSopenharmony_ci#[test] 2319625d8cSopenharmony_cifn possible_value_arg_value() { 2419625d8cSopenharmony_ci let m = Command::new("possible_values") 2519625d8cSopenharmony_ci .arg( 2619625d8cSopenharmony_ci Arg::new("arg_value") 2719625d8cSopenharmony_ci .index(1) 2819625d8cSopenharmony_ci .value_parser([PossibleValue::new("test123") 2919625d8cSopenharmony_ci .hide(false) 3019625d8cSopenharmony_ci .help("It's just a test")]), 3119625d8cSopenharmony_ci ) 3219625d8cSopenharmony_ci .try_get_matches_from(vec!["myprog", "test123"]); 3319625d8cSopenharmony_ci 3419625d8cSopenharmony_ci assert!(m.is_ok(), "{}", m.unwrap_err()); 3519625d8cSopenharmony_ci let m = m.unwrap(); 3619625d8cSopenharmony_ci 3719625d8cSopenharmony_ci assert!(m.contains_id("arg_value")); 3819625d8cSopenharmony_ci assert_eq!( 3919625d8cSopenharmony_ci m.get_one::<String>("arg_value").map(|v| v.as_str()), 4019625d8cSopenharmony_ci Some("test123") 4119625d8cSopenharmony_ci ); 4219625d8cSopenharmony_ci} 4319625d8cSopenharmony_ci 4419625d8cSopenharmony_ci#[test] 4519625d8cSopenharmony_cifn possible_values_of_positional_fail() { 4619625d8cSopenharmony_ci let m = Command::new("possible_values") 4719625d8cSopenharmony_ci .arg(Arg::new("positional").index(1).value_parser(["test123"])) 4819625d8cSopenharmony_ci .try_get_matches_from(vec!["myprog", "notest"]); 4919625d8cSopenharmony_ci 5019625d8cSopenharmony_ci assert!(m.is_err()); 5119625d8cSopenharmony_ci assert_eq!(m.unwrap_err().kind(), ErrorKind::InvalidValue); 5219625d8cSopenharmony_ci} 5319625d8cSopenharmony_ci 5419625d8cSopenharmony_ci#[test] 5519625d8cSopenharmony_cifn possible_values_of_positional_multiple() { 5619625d8cSopenharmony_ci let m = Command::new("possible_values") 5719625d8cSopenharmony_ci .arg( 5819625d8cSopenharmony_ci Arg::new("positional") 5919625d8cSopenharmony_ci .index(1) 6019625d8cSopenharmony_ci .action(ArgAction::Set) 6119625d8cSopenharmony_ci .value_parser(["test123", "test321"]) 6219625d8cSopenharmony_ci .num_args(1..), 6319625d8cSopenharmony_ci ) 6419625d8cSopenharmony_ci .try_get_matches_from(vec!["myprog", "test123", "test321"]); 6519625d8cSopenharmony_ci 6619625d8cSopenharmony_ci assert!(m.is_ok(), "{}", m.unwrap_err()); 6719625d8cSopenharmony_ci let m = m.unwrap(); 6819625d8cSopenharmony_ci 6919625d8cSopenharmony_ci assert!(m.contains_id("positional")); 7019625d8cSopenharmony_ci assert_eq!( 7119625d8cSopenharmony_ci m.get_many::<String>("positional") 7219625d8cSopenharmony_ci .unwrap() 7319625d8cSopenharmony_ci .map(|v| v.as_str()) 7419625d8cSopenharmony_ci .collect::<Vec<_>>(), 7519625d8cSopenharmony_ci vec!["test123", "test321"] 7619625d8cSopenharmony_ci ); 7719625d8cSopenharmony_ci} 7819625d8cSopenharmony_ci 7919625d8cSopenharmony_ci#[test] 8019625d8cSopenharmony_cifn possible_values_of_positional_multiple_fail() { 8119625d8cSopenharmony_ci let m = Command::new("possible_values") 8219625d8cSopenharmony_ci .arg( 8319625d8cSopenharmony_ci Arg::new("positional") 8419625d8cSopenharmony_ci .index(1) 8519625d8cSopenharmony_ci .action(ArgAction::Set) 8619625d8cSopenharmony_ci .value_parser(["test123", "test321"]) 8719625d8cSopenharmony_ci .num_args(1..), 8819625d8cSopenharmony_ci ) 8919625d8cSopenharmony_ci .try_get_matches_from(vec!["myprog", "test123", "notest"]); 9019625d8cSopenharmony_ci 9119625d8cSopenharmony_ci assert!(m.is_err()); 9219625d8cSopenharmony_ci assert_eq!(m.unwrap_err().kind(), ErrorKind::InvalidValue); 9319625d8cSopenharmony_ci} 9419625d8cSopenharmony_ci 9519625d8cSopenharmony_ci#[test] 9619625d8cSopenharmony_cifn possible_values_of_option() { 9719625d8cSopenharmony_ci let m = Command::new("possible_values") 9819625d8cSopenharmony_ci .arg( 9919625d8cSopenharmony_ci Arg::new("option") 10019625d8cSopenharmony_ci .short('o') 10119625d8cSopenharmony_ci .long("option") 10219625d8cSopenharmony_ci .action(ArgAction::Set) 10319625d8cSopenharmony_ci .value_parser(["test123"]), 10419625d8cSopenharmony_ci ) 10519625d8cSopenharmony_ci .try_get_matches_from(vec!["myprog", "--option", "test123"]); 10619625d8cSopenharmony_ci 10719625d8cSopenharmony_ci assert!(m.is_ok(), "{}", m.unwrap_err()); 10819625d8cSopenharmony_ci let m = m.unwrap(); 10919625d8cSopenharmony_ci 11019625d8cSopenharmony_ci assert!(m.contains_id("option")); 11119625d8cSopenharmony_ci assert_eq!( 11219625d8cSopenharmony_ci m.get_one::<String>("option").map(|v| v.as_str()), 11319625d8cSopenharmony_ci Some("test123") 11419625d8cSopenharmony_ci ); 11519625d8cSopenharmony_ci} 11619625d8cSopenharmony_ci 11719625d8cSopenharmony_ci#[test] 11819625d8cSopenharmony_cifn possible_values_of_option_fail() { 11919625d8cSopenharmony_ci let m = Command::new("possible_values") 12019625d8cSopenharmony_ci .arg( 12119625d8cSopenharmony_ci Arg::new("option") 12219625d8cSopenharmony_ci .short('o') 12319625d8cSopenharmony_ci .long("option") 12419625d8cSopenharmony_ci .action(ArgAction::Set) 12519625d8cSopenharmony_ci .value_parser(["test123"]), 12619625d8cSopenharmony_ci ) 12719625d8cSopenharmony_ci .try_get_matches_from(vec!["myprog", "--option", "notest"]); 12819625d8cSopenharmony_ci 12919625d8cSopenharmony_ci assert!(m.is_err()); 13019625d8cSopenharmony_ci assert_eq!(m.unwrap_err().kind(), ErrorKind::InvalidValue); 13119625d8cSopenharmony_ci} 13219625d8cSopenharmony_ci 13319625d8cSopenharmony_ci#[test] 13419625d8cSopenharmony_cifn possible_values_of_option_multiple() { 13519625d8cSopenharmony_ci let m = Command::new("possible_values") 13619625d8cSopenharmony_ci .arg( 13719625d8cSopenharmony_ci Arg::new("option") 13819625d8cSopenharmony_ci .short('o') 13919625d8cSopenharmony_ci .long("option") 14019625d8cSopenharmony_ci .action(ArgAction::Set) 14119625d8cSopenharmony_ci .value_parser(["test123", "test321"]) 14219625d8cSopenharmony_ci .action(ArgAction::Append), 14319625d8cSopenharmony_ci ) 14419625d8cSopenharmony_ci .try_get_matches_from(vec!["", "--option", "test123", "--option", "test321"]); 14519625d8cSopenharmony_ci 14619625d8cSopenharmony_ci assert!(m.is_ok(), "{}", m.unwrap_err()); 14719625d8cSopenharmony_ci let m = m.unwrap(); 14819625d8cSopenharmony_ci 14919625d8cSopenharmony_ci assert!(m.contains_id("option")); 15019625d8cSopenharmony_ci assert_eq!( 15119625d8cSopenharmony_ci m.get_many::<String>("option") 15219625d8cSopenharmony_ci .unwrap() 15319625d8cSopenharmony_ci .map(|v| v.as_str()) 15419625d8cSopenharmony_ci .collect::<Vec<_>>(), 15519625d8cSopenharmony_ci vec!["test123", "test321"] 15619625d8cSopenharmony_ci ); 15719625d8cSopenharmony_ci} 15819625d8cSopenharmony_ci 15919625d8cSopenharmony_ci#[test] 16019625d8cSopenharmony_cifn possible_values_of_option_multiple_fail() { 16119625d8cSopenharmony_ci let m = Command::new("possible_values") 16219625d8cSopenharmony_ci .arg( 16319625d8cSopenharmony_ci Arg::new("option") 16419625d8cSopenharmony_ci .short('o') 16519625d8cSopenharmony_ci .long("option") 16619625d8cSopenharmony_ci .action(ArgAction::Set) 16719625d8cSopenharmony_ci .value_parser(["test123", "test321"]) 16819625d8cSopenharmony_ci .action(ArgAction::Append), 16919625d8cSopenharmony_ci ) 17019625d8cSopenharmony_ci .try_get_matches_from(vec!["", "--option", "test123", "--option", "notest"]); 17119625d8cSopenharmony_ci 17219625d8cSopenharmony_ci assert!(m.is_err()); 17319625d8cSopenharmony_ci assert_eq!(m.unwrap_err().kind(), ErrorKind::InvalidValue); 17419625d8cSopenharmony_ci} 17519625d8cSopenharmony_ci 17619625d8cSopenharmony_ci#[test] 17719625d8cSopenharmony_ci#[cfg(feature = "error-context")] 17819625d8cSopenharmony_cifn possible_values_output() { 17919625d8cSopenharmony_ci #[cfg(feature = "suggestions")] 18019625d8cSopenharmony_ci static PV_ERROR: &str = "\ 18119625d8cSopenharmony_cierror: invalid value 'slo' for '-O <option>' 18219625d8cSopenharmony_ci [possible values: slow, fast, \"ludicrous speed\"] 18319625d8cSopenharmony_ci 18419625d8cSopenharmony_ci note: value 'slow' exists 18519625d8cSopenharmony_ci 18619625d8cSopenharmony_ciFor more information, try '--help'. 18719625d8cSopenharmony_ci"; 18819625d8cSopenharmony_ci 18919625d8cSopenharmony_ci #[cfg(not(feature = "suggestions"))] 19019625d8cSopenharmony_ci static PV_ERROR: &str = "\ 19119625d8cSopenharmony_cierror: invalid value 'slo' for '-O <option>' 19219625d8cSopenharmony_ci [possible values: slow, fast, \"ludicrous speed\"] 19319625d8cSopenharmony_ci 19419625d8cSopenharmony_ciFor more information, try '--help'. 19519625d8cSopenharmony_ci"; 19619625d8cSopenharmony_ci 19719625d8cSopenharmony_ci utils::assert_output( 19819625d8cSopenharmony_ci Command::new("test").arg( 19919625d8cSopenharmony_ci Arg::new("option") 20019625d8cSopenharmony_ci .short('O') 20119625d8cSopenharmony_ci .action(ArgAction::Set) 20219625d8cSopenharmony_ci .value_parser(["slow", "fast", "ludicrous speed"]), 20319625d8cSopenharmony_ci ), 20419625d8cSopenharmony_ci "clap-test -O slo", 20519625d8cSopenharmony_ci PV_ERROR, 20619625d8cSopenharmony_ci true, 20719625d8cSopenharmony_ci ); 20819625d8cSopenharmony_ci} 20919625d8cSopenharmony_ci 21019625d8cSopenharmony_ci#[test] 21119625d8cSopenharmony_ci#[cfg(feature = "error-context")] 21219625d8cSopenharmony_cifn possible_values_alias_output() { 21319625d8cSopenharmony_ci #[cfg(feature = "suggestions")] 21419625d8cSopenharmony_ci static PV_ERROR: &str = "\ 21519625d8cSopenharmony_cierror: invalid value 'slo' for '-O <option>' 21619625d8cSopenharmony_ci [possible values: slow, fast, \"ludicrous speed\"] 21719625d8cSopenharmony_ci 21819625d8cSopenharmony_ci note: value 'slow' exists 21919625d8cSopenharmony_ci 22019625d8cSopenharmony_ciFor more information, try '--help'. 22119625d8cSopenharmony_ci"; 22219625d8cSopenharmony_ci 22319625d8cSopenharmony_ci #[cfg(not(feature = "suggestions"))] 22419625d8cSopenharmony_ci static PV_ERROR: &str = "\ 22519625d8cSopenharmony_cierror: invalid value 'slo' for '-O <option>' 22619625d8cSopenharmony_ci [possible values: slow, fast, \"ludicrous speed\"] 22719625d8cSopenharmony_ci 22819625d8cSopenharmony_ciFor more information, try '--help'. 22919625d8cSopenharmony_ci"; 23019625d8cSopenharmony_ci 23119625d8cSopenharmony_ci utils::assert_output( 23219625d8cSopenharmony_ci Command::new("test").arg( 23319625d8cSopenharmony_ci Arg::new("option") 23419625d8cSopenharmony_ci .short('O') 23519625d8cSopenharmony_ci .action(ArgAction::Set) 23619625d8cSopenharmony_ci .value_parser([ 23719625d8cSopenharmony_ci "slow".into(), 23819625d8cSopenharmony_ci PossibleValue::new("fast").alias("fost"), 23919625d8cSopenharmony_ci PossibleValue::new("ludicrous speed").aliases(["ls", "lcs"]), 24019625d8cSopenharmony_ci ]), 24119625d8cSopenharmony_ci ), 24219625d8cSopenharmony_ci "clap-test -O slo", 24319625d8cSopenharmony_ci PV_ERROR, 24419625d8cSopenharmony_ci true, 24519625d8cSopenharmony_ci ); 24619625d8cSopenharmony_ci} 24719625d8cSopenharmony_ci 24819625d8cSopenharmony_ci#[test] 24919625d8cSopenharmony_ci#[cfg(feature = "error-context")] 25019625d8cSopenharmony_cifn possible_values_hidden_output() { 25119625d8cSopenharmony_ci #[cfg(feature = "suggestions")] 25219625d8cSopenharmony_ci static PV_ERROR: &str = "\ 25319625d8cSopenharmony_cierror: invalid value 'slo' for '-O <option>' 25419625d8cSopenharmony_ci [possible values: slow, fast, \"ludicrous speed\"] 25519625d8cSopenharmony_ci 25619625d8cSopenharmony_ci note: value 'slow' exists 25719625d8cSopenharmony_ci 25819625d8cSopenharmony_ciFor more information, try '--help'. 25919625d8cSopenharmony_ci"; 26019625d8cSopenharmony_ci 26119625d8cSopenharmony_ci #[cfg(not(feature = "suggestions"))] 26219625d8cSopenharmony_ci static PV_ERROR: &str = "\ 26319625d8cSopenharmony_cierror: invalid value 'slo' for '-O <option>' 26419625d8cSopenharmony_ci [possible values: slow, fast, \"ludicrous speed\"] 26519625d8cSopenharmony_ci 26619625d8cSopenharmony_ciFor more information, try '--help'. 26719625d8cSopenharmony_ci"; 26819625d8cSopenharmony_ci 26919625d8cSopenharmony_ci utils::assert_output( 27019625d8cSopenharmony_ci Command::new("test").arg( 27119625d8cSopenharmony_ci Arg::new("option") 27219625d8cSopenharmony_ci .short('O') 27319625d8cSopenharmony_ci .action(ArgAction::Set) 27419625d8cSopenharmony_ci .value_parser([ 27519625d8cSopenharmony_ci "slow".into(), 27619625d8cSopenharmony_ci "fast".into(), 27719625d8cSopenharmony_ci PossibleValue::new("ludicrous speed"), 27819625d8cSopenharmony_ci PossibleValue::new("forbidden speed").hide(true), 27919625d8cSopenharmony_ci ]), 28019625d8cSopenharmony_ci ), 28119625d8cSopenharmony_ci "clap-test -O slo", 28219625d8cSopenharmony_ci PV_ERROR, 28319625d8cSopenharmony_ci true, 28419625d8cSopenharmony_ci ); 28519625d8cSopenharmony_ci} 28619625d8cSopenharmony_ci 28719625d8cSopenharmony_ci#[test] 28819625d8cSopenharmony_ci#[cfg(feature = "error-context")] 28919625d8cSopenharmony_cifn escaped_possible_values_output() { 29019625d8cSopenharmony_ci #[cfg(feature = "suggestions")] 29119625d8cSopenharmony_ci static PV_ERROR_ESCAPED: &str = "\ 29219625d8cSopenharmony_cierror: invalid value 'ludicrous' for '-O <option>' 29319625d8cSopenharmony_ci [possible values: slow, fast, \"ludicrous speed\"] 29419625d8cSopenharmony_ci 29519625d8cSopenharmony_ci note: value 'ludicrous speed' exists 29619625d8cSopenharmony_ci 29719625d8cSopenharmony_ciFor more information, try '--help'. 29819625d8cSopenharmony_ci"; 29919625d8cSopenharmony_ci 30019625d8cSopenharmony_ci #[cfg(not(feature = "suggestions"))] 30119625d8cSopenharmony_ci static PV_ERROR_ESCAPED: &str = "\ 30219625d8cSopenharmony_cierror: invalid value 'ludicrous' for '-O <option>' 30319625d8cSopenharmony_ci [possible values: slow, fast, \"ludicrous speed\"] 30419625d8cSopenharmony_ci 30519625d8cSopenharmony_ciFor more information, try '--help'. 30619625d8cSopenharmony_ci"; 30719625d8cSopenharmony_ci 30819625d8cSopenharmony_ci utils::assert_output( 30919625d8cSopenharmony_ci Command::new("test").arg( 31019625d8cSopenharmony_ci Arg::new("option") 31119625d8cSopenharmony_ci .short('O') 31219625d8cSopenharmony_ci .action(ArgAction::Set) 31319625d8cSopenharmony_ci .value_parser(["slow", "fast", "ludicrous speed"]), 31419625d8cSopenharmony_ci ), 31519625d8cSopenharmony_ci "clap-test -O ludicrous", 31619625d8cSopenharmony_ci PV_ERROR_ESCAPED, 31719625d8cSopenharmony_ci true, 31819625d8cSopenharmony_ci ); 31919625d8cSopenharmony_ci} 32019625d8cSopenharmony_ci 32119625d8cSopenharmony_ci#[test] 32219625d8cSopenharmony_ci#[cfg(feature = "error-context")] 32319625d8cSopenharmony_cifn missing_possible_value_error() { 32419625d8cSopenharmony_ci static MISSING_PV_ERROR: &str = "\ 32519625d8cSopenharmony_cierror: a value is required for '-O <option>' but none was supplied 32619625d8cSopenharmony_ci [possible values: slow, fast, \"ludicrous speed\"] 32719625d8cSopenharmony_ci 32819625d8cSopenharmony_ciFor more information, try '--help'. 32919625d8cSopenharmony_ci"; 33019625d8cSopenharmony_ci 33119625d8cSopenharmony_ci utils::assert_output( 33219625d8cSopenharmony_ci Command::new("test").arg( 33319625d8cSopenharmony_ci Arg::new("option") 33419625d8cSopenharmony_ci .short('O') 33519625d8cSopenharmony_ci .action(ArgAction::Set) 33619625d8cSopenharmony_ci .value_parser([ 33719625d8cSopenharmony_ci "slow".into(), 33819625d8cSopenharmony_ci PossibleValue::new("fast").alias("fost"), 33919625d8cSopenharmony_ci PossibleValue::new("ludicrous speed"), 34019625d8cSopenharmony_ci PossibleValue::new("forbidden speed").hide(true), 34119625d8cSopenharmony_ci ]), 34219625d8cSopenharmony_ci ), 34319625d8cSopenharmony_ci "clap-test -O", 34419625d8cSopenharmony_ci MISSING_PV_ERROR, 34519625d8cSopenharmony_ci true, 34619625d8cSopenharmony_ci ); 34719625d8cSopenharmony_ci} 34819625d8cSopenharmony_ci 34919625d8cSopenharmony_ci#[test] 35019625d8cSopenharmony_cifn alias() { 35119625d8cSopenharmony_ci let m = Command::new("pv") 35219625d8cSopenharmony_ci .arg( 35319625d8cSopenharmony_ci Arg::new("option") 35419625d8cSopenharmony_ci .short('o') 35519625d8cSopenharmony_ci .long("option") 35619625d8cSopenharmony_ci .action(ArgAction::Set) 35719625d8cSopenharmony_ci .value_parser([PossibleValue::new("test123").alias("123"), "test321".into()]) 35819625d8cSopenharmony_ci .ignore_case(true), 35919625d8cSopenharmony_ci ) 36019625d8cSopenharmony_ci .try_get_matches_from(vec!["pv", "--option", "123"]); 36119625d8cSopenharmony_ci 36219625d8cSopenharmony_ci assert!(m.is_ok(), "{}", m.unwrap_err()); 36319625d8cSopenharmony_ci assert!(m 36419625d8cSopenharmony_ci .unwrap() 36519625d8cSopenharmony_ci .get_one::<String>("option") 36619625d8cSopenharmony_ci .map(|v| v.as_str()) 36719625d8cSopenharmony_ci .unwrap() 36819625d8cSopenharmony_ci .eq("123")); 36919625d8cSopenharmony_ci} 37019625d8cSopenharmony_ci 37119625d8cSopenharmony_ci#[test] 37219625d8cSopenharmony_cifn aliases() { 37319625d8cSopenharmony_ci let m = Command::new("pv") 37419625d8cSopenharmony_ci .arg( 37519625d8cSopenharmony_ci Arg::new("option") 37619625d8cSopenharmony_ci .short('o') 37719625d8cSopenharmony_ci .long("option") 37819625d8cSopenharmony_ci .action(ArgAction::Set) 37919625d8cSopenharmony_ci .value_parser([ 38019625d8cSopenharmony_ci PossibleValue::new("test123").aliases(["1", "2", "3"]), 38119625d8cSopenharmony_ci "test321".into(), 38219625d8cSopenharmony_ci ]) 38319625d8cSopenharmony_ci .ignore_case(true), 38419625d8cSopenharmony_ci ) 38519625d8cSopenharmony_ci .try_get_matches_from(vec!["pv", "--option", "2"]); 38619625d8cSopenharmony_ci 38719625d8cSopenharmony_ci assert!(m.is_ok(), "{}", m.unwrap_err()); 38819625d8cSopenharmony_ci assert!(m 38919625d8cSopenharmony_ci .unwrap() 39019625d8cSopenharmony_ci .get_one::<String>("option") 39119625d8cSopenharmony_ci .map(|v| v.as_str()) 39219625d8cSopenharmony_ci .unwrap() 39319625d8cSopenharmony_ci .eq("2")); 39419625d8cSopenharmony_ci} 39519625d8cSopenharmony_ci 39619625d8cSopenharmony_ci#[test] 39719625d8cSopenharmony_cifn ignore_case() { 39819625d8cSopenharmony_ci let m = Command::new("pv") 39919625d8cSopenharmony_ci .arg( 40019625d8cSopenharmony_ci Arg::new("option") 40119625d8cSopenharmony_ci .short('o') 40219625d8cSopenharmony_ci .long("option") 40319625d8cSopenharmony_ci .action(ArgAction::Set) 40419625d8cSopenharmony_ci .value_parser(["test123", "test321"]) 40519625d8cSopenharmony_ci .ignore_case(true), 40619625d8cSopenharmony_ci ) 40719625d8cSopenharmony_ci .try_get_matches_from(vec!["pv", "--option", "TeSt123"]); 40819625d8cSopenharmony_ci 40919625d8cSopenharmony_ci assert!(m.is_ok(), "{}", m.unwrap_err()); 41019625d8cSopenharmony_ci assert!(m 41119625d8cSopenharmony_ci .unwrap() 41219625d8cSopenharmony_ci .get_one::<String>("option") 41319625d8cSopenharmony_ci .map(|v| v.as_str()) 41419625d8cSopenharmony_ci .unwrap() 41519625d8cSopenharmony_ci .eq_ignore_ascii_case("test123")); 41619625d8cSopenharmony_ci} 41719625d8cSopenharmony_ci 41819625d8cSopenharmony_ci#[test] 41919625d8cSopenharmony_cifn ignore_case_fail() { 42019625d8cSopenharmony_ci let m = Command::new("pv") 42119625d8cSopenharmony_ci .arg( 42219625d8cSopenharmony_ci Arg::new("option") 42319625d8cSopenharmony_ci .short('o') 42419625d8cSopenharmony_ci .long("option") 42519625d8cSopenharmony_ci .action(ArgAction::Set) 42619625d8cSopenharmony_ci .value_parser(["test123", "test321"]), 42719625d8cSopenharmony_ci ) 42819625d8cSopenharmony_ci .try_get_matches_from(vec!["pv", "--option", "TeSt123"]); 42919625d8cSopenharmony_ci 43019625d8cSopenharmony_ci assert!(m.is_err()); 43119625d8cSopenharmony_ci assert_eq!(m.unwrap_err().kind(), ErrorKind::InvalidValue); 43219625d8cSopenharmony_ci} 43319625d8cSopenharmony_ci 43419625d8cSopenharmony_ci#[test] 43519625d8cSopenharmony_cifn ignore_case_multiple() { 43619625d8cSopenharmony_ci let m = Command::new("pv") 43719625d8cSopenharmony_ci .arg( 43819625d8cSopenharmony_ci Arg::new("option") 43919625d8cSopenharmony_ci .short('o') 44019625d8cSopenharmony_ci .long("option") 44119625d8cSopenharmony_ci .action(ArgAction::Set) 44219625d8cSopenharmony_ci .value_parser(["test123", "test321"]) 44319625d8cSopenharmony_ci .num_args(1..) 44419625d8cSopenharmony_ci .ignore_case(true), 44519625d8cSopenharmony_ci ) 44619625d8cSopenharmony_ci .try_get_matches_from(vec!["pv", "--option", "TeSt123", "teST123", "tESt321"]); 44719625d8cSopenharmony_ci 44819625d8cSopenharmony_ci assert!(m.is_ok(), "{}", m.unwrap_err()); 44919625d8cSopenharmony_ci assert_eq!( 45019625d8cSopenharmony_ci m.unwrap() 45119625d8cSopenharmony_ci .get_many::<String>("option") 45219625d8cSopenharmony_ci .unwrap() 45319625d8cSopenharmony_ci .map(|v| v.as_str()) 45419625d8cSopenharmony_ci .collect::<Vec<_>>(), 45519625d8cSopenharmony_ci ["TeSt123", "teST123", "tESt321"] 45619625d8cSopenharmony_ci ); 45719625d8cSopenharmony_ci} 45819625d8cSopenharmony_ci 45919625d8cSopenharmony_ci#[test] 46019625d8cSopenharmony_cifn ignore_case_multiple_fail() { 46119625d8cSopenharmony_ci let m = Command::new("pv") 46219625d8cSopenharmony_ci .arg( 46319625d8cSopenharmony_ci Arg::new("option") 46419625d8cSopenharmony_ci .short('o') 46519625d8cSopenharmony_ci .long("option") 46619625d8cSopenharmony_ci .action(ArgAction::Set) 46719625d8cSopenharmony_ci .value_parser(["test123", "test321"]) 46819625d8cSopenharmony_ci .num_args(1..), 46919625d8cSopenharmony_ci ) 47019625d8cSopenharmony_ci .try_get_matches_from(vec!["pv", "--option", "test123", "teST123", "test321"]); 47119625d8cSopenharmony_ci 47219625d8cSopenharmony_ci assert!(m.is_err()); 47319625d8cSopenharmony_ci assert_eq!(m.unwrap_err().kind(), ErrorKind::InvalidValue); 47419625d8cSopenharmony_ci} 475