119625d8cSopenharmony_cimod arg { 219625d8cSopenharmony_ci #[test] 319625d8cSopenharmony_ci fn name_explicit() { 419625d8cSopenharmony_ci let arg = clap::arg!(foo: --bar <NUM>); 519625d8cSopenharmony_ci assert_eq!(arg.get_id(), "foo"); 619625d8cSopenharmony_ci assert_eq!(arg.get_long(), Some("bar")); 719625d8cSopenharmony_ci assert_eq!(arg.get_value_names(), Some(vec!["NUM".into()].as_slice())); 819625d8cSopenharmony_ci assert!(!arg.is_required_set()); 919625d8cSopenharmony_ci } 1019625d8cSopenharmony_ci 1119625d8cSopenharmony_ci #[test] 1219625d8cSopenharmony_ci fn name_from_long() { 1319625d8cSopenharmony_ci let arg = clap::arg!(--bar <NUM>); 1419625d8cSopenharmony_ci assert_eq!(arg.get_id(), "bar"); 1519625d8cSopenharmony_ci assert_eq!(arg.get_long(), Some("bar")); 1619625d8cSopenharmony_ci assert_eq!(arg.get_value_names(), Some(vec!["NUM".into()].as_slice())); 1719625d8cSopenharmony_ci assert!(!arg.is_required_set()); 1819625d8cSopenharmony_ci } 1919625d8cSopenharmony_ci 2019625d8cSopenharmony_ci #[test] 2119625d8cSopenharmony_ci fn name_from_value() { 2219625d8cSopenharmony_ci let arg = clap::arg!(<NUM>); 2319625d8cSopenharmony_ci assert_eq!(arg.get_id(), "NUM"); 2419625d8cSopenharmony_ci assert_eq!(arg.get_long(), None); 2519625d8cSopenharmony_ci assert_eq!(arg.get_value_names(), Some(vec!["NUM".into()].as_slice())); 2619625d8cSopenharmony_ci assert!(arg.is_required_set()); 2719625d8cSopenharmony_ci } 2819625d8cSopenharmony_ci 2919625d8cSopenharmony_ci #[test] 3019625d8cSopenharmony_ci #[should_panic] 3119625d8cSopenharmony_ci fn name_none_fails() { 3219625d8cSopenharmony_ci clap::arg!("Help"); 3319625d8cSopenharmony_ci } 3419625d8cSopenharmony_ci 3519625d8cSopenharmony_ci #[test] 3619625d8cSopenharmony_ci #[should_panic] 3719625d8cSopenharmony_ci fn short_only_fails() { 3819625d8cSopenharmony_ci clap::arg!(-b); 3919625d8cSopenharmony_ci } 4019625d8cSopenharmony_ci 4119625d8cSopenharmony_ci #[test] 4219625d8cSopenharmony_ci fn short() { 4319625d8cSopenharmony_ci let arg = clap::arg!(foo: -b); 4419625d8cSopenharmony_ci assert_eq!(arg.get_id(), "foo"); 4519625d8cSopenharmony_ci assert_eq!(arg.get_short(), Some('b')); 4619625d8cSopenharmony_ci assert!(matches!(arg.get_action(), clap::ArgAction::SetTrue)); 4719625d8cSopenharmony_ci assert_eq!(arg.get_num_args(), None); 4819625d8cSopenharmony_ci assert!(!arg.is_required_set()); 4919625d8cSopenharmony_ci assert_eq!(arg.get_help().map(|s| s.to_string()), None); 5019625d8cSopenharmony_ci 5119625d8cSopenharmony_ci let arg = clap::arg!(foo: -'b'); 5219625d8cSopenharmony_ci assert_eq!(arg.get_id(), "foo"); 5319625d8cSopenharmony_ci assert_eq!(arg.get_short(), Some('b')); 5419625d8cSopenharmony_ci assert!(matches!(arg.get_action(), clap::ArgAction::SetTrue)); 5519625d8cSopenharmony_ci assert_eq!(arg.get_num_args(), None); 5619625d8cSopenharmony_ci assert!(!arg.is_required_set()); 5719625d8cSopenharmony_ci assert_eq!(arg.get_help().map(|s| s.to_string()), None); 5819625d8cSopenharmony_ci 5919625d8cSopenharmony_ci let arg = clap::arg!(foo: -b ...); 6019625d8cSopenharmony_ci assert_eq!(arg.get_id(), "foo"); 6119625d8cSopenharmony_ci assert_eq!(arg.get_short(), Some('b')); 6219625d8cSopenharmony_ci assert!(matches!(arg.get_action(), clap::ArgAction::Count)); 6319625d8cSopenharmony_ci assert_eq!(arg.get_num_args(), None); 6419625d8cSopenharmony_ci assert!(!arg.is_required_set()); 6519625d8cSopenharmony_ci assert_eq!(arg.get_help().map(|s| s.to_string()), None); 6619625d8cSopenharmony_ci 6719625d8cSopenharmony_ci let arg = clap::arg!(foo: -b "How to use it"); 6819625d8cSopenharmony_ci assert_eq!(arg.get_id(), "foo"); 6919625d8cSopenharmony_ci assert_eq!(arg.get_short(), Some('b')); 7019625d8cSopenharmony_ci assert!(matches!(arg.get_action(), clap::ArgAction::SetTrue)); 7119625d8cSopenharmony_ci assert_eq!(arg.get_num_args(), None); 7219625d8cSopenharmony_ci assert!(!arg.is_required_set()); 7319625d8cSopenharmony_ci assert_eq!( 7419625d8cSopenharmony_ci arg.get_help().map(|s| s.to_string()), 7519625d8cSopenharmony_ci Some("How to use it".to_owned()) 7619625d8cSopenharmony_ci ); 7719625d8cSopenharmony_ci } 7819625d8cSopenharmony_ci 7919625d8cSopenharmony_ci #[test] 8019625d8cSopenharmony_ci fn short_and_long() { 8119625d8cSopenharmony_ci let arg = clap::arg!(foo: -b --hello); 8219625d8cSopenharmony_ci assert_eq!(arg.get_id(), "foo"); 8319625d8cSopenharmony_ci assert_eq!(arg.get_long(), Some("hello")); 8419625d8cSopenharmony_ci assert_eq!(arg.get_short(), Some('b')); 8519625d8cSopenharmony_ci assert!(matches!(arg.get_action(), clap::ArgAction::SetTrue)); 8619625d8cSopenharmony_ci assert_eq!(arg.get_num_args(), None); 8719625d8cSopenharmony_ci assert!(!arg.is_required_set()); 8819625d8cSopenharmony_ci assert_eq!(arg.get_help().map(|s| s.to_string()), None); 8919625d8cSopenharmony_ci 9019625d8cSopenharmony_ci let arg = clap::arg!(foo: -'b' --hello); 9119625d8cSopenharmony_ci assert_eq!(arg.get_id(), "foo"); 9219625d8cSopenharmony_ci assert_eq!(arg.get_long(), Some("hello")); 9319625d8cSopenharmony_ci assert_eq!(arg.get_short(), Some('b')); 9419625d8cSopenharmony_ci assert!(matches!(arg.get_action(), clap::ArgAction::SetTrue)); 9519625d8cSopenharmony_ci assert_eq!(arg.get_num_args(), None); 9619625d8cSopenharmony_ci assert!(!arg.is_required_set()); 9719625d8cSopenharmony_ci assert_eq!(arg.get_help().map(|s| s.to_string()), None); 9819625d8cSopenharmony_ci 9919625d8cSopenharmony_ci let arg = clap::arg!(foo: -b --hello ...); 10019625d8cSopenharmony_ci assert_eq!(arg.get_id(), "foo"); 10119625d8cSopenharmony_ci assert_eq!(arg.get_long(), Some("hello")); 10219625d8cSopenharmony_ci assert_eq!(arg.get_short(), Some('b')); 10319625d8cSopenharmony_ci assert!(matches!(arg.get_action(), clap::ArgAction::Count)); 10419625d8cSopenharmony_ci assert_eq!(arg.get_num_args(), None); 10519625d8cSopenharmony_ci assert!(!arg.is_required_set()); 10619625d8cSopenharmony_ci assert_eq!(arg.get_help().map(|s| s.to_string()), None); 10719625d8cSopenharmony_ci 10819625d8cSopenharmony_ci let arg = clap::arg!(foo: -b --hello "How to use it"); 10919625d8cSopenharmony_ci assert_eq!(arg.get_id(), "foo"); 11019625d8cSopenharmony_ci assert_eq!(arg.get_long(), Some("hello")); 11119625d8cSopenharmony_ci assert_eq!(arg.get_short(), Some('b')); 11219625d8cSopenharmony_ci assert!(matches!(arg.get_action(), clap::ArgAction::SetTrue)); 11319625d8cSopenharmony_ci assert_eq!(arg.get_num_args(), None); 11419625d8cSopenharmony_ci assert!(!arg.is_required_set()); 11519625d8cSopenharmony_ci assert_eq!( 11619625d8cSopenharmony_ci arg.get_help().map(|s| s.to_string()), 11719625d8cSopenharmony_ci Some("How to use it".to_owned()) 11819625d8cSopenharmony_ci ); 11919625d8cSopenharmony_ci } 12019625d8cSopenharmony_ci 12119625d8cSopenharmony_ci #[test] 12219625d8cSopenharmony_ci fn short_help() { 12319625d8cSopenharmony_ci let arg = clap::arg!(help: -b); 12419625d8cSopenharmony_ci assert!(matches!(arg.get_action(), clap::ArgAction::SetTrue)); 12519625d8cSopenharmony_ci 12619625d8cSopenharmony_ci let mut cmd = clap::Command::new("cmd") 12719625d8cSopenharmony_ci .disable_help_flag(true) 12819625d8cSopenharmony_ci .arg(clap::arg!(help: -b).action(clap::ArgAction::Help)); 12919625d8cSopenharmony_ci cmd.build(); 13019625d8cSopenharmony_ci let arg = cmd 13119625d8cSopenharmony_ci .get_arguments() 13219625d8cSopenharmony_ci .find(|arg| arg.get_id() == "help") 13319625d8cSopenharmony_ci .unwrap(); 13419625d8cSopenharmony_ci assert!(matches!(arg.get_action(), clap::ArgAction::Help)); 13519625d8cSopenharmony_ci } 13619625d8cSopenharmony_ci 13719625d8cSopenharmony_ci #[test] 13819625d8cSopenharmony_ci fn long_help() { 13919625d8cSopenharmony_ci let arg = clap::arg!(-'?' - -help); 14019625d8cSopenharmony_ci assert!(matches!(arg.get_action(), clap::ArgAction::SetTrue)); 14119625d8cSopenharmony_ci 14219625d8cSopenharmony_ci let mut cmd = clap::Command::new("cmd") 14319625d8cSopenharmony_ci .disable_help_flag(true) 14419625d8cSopenharmony_ci .arg(clap::arg!(-'?' - -help).action(clap::ArgAction::Help)); 14519625d8cSopenharmony_ci cmd.build(); 14619625d8cSopenharmony_ci let arg = cmd 14719625d8cSopenharmony_ci .get_arguments() 14819625d8cSopenharmony_ci .find(|arg| arg.get_id() == "help") 14919625d8cSopenharmony_ci .unwrap(); 15019625d8cSopenharmony_ci assert!(matches!(arg.get_action(), clap::ArgAction::Help)); 15119625d8cSopenharmony_ci } 15219625d8cSopenharmony_ci 15319625d8cSopenharmony_ci #[test] 15419625d8cSopenharmony_ci fn short_version() { 15519625d8cSopenharmony_ci let arg = clap::arg!(version: -b); 15619625d8cSopenharmony_ci assert!(matches!(arg.get_action(), clap::ArgAction::SetTrue)); 15719625d8cSopenharmony_ci 15819625d8cSopenharmony_ci let mut cmd = clap::Command::new("cmd") 15919625d8cSopenharmony_ci .disable_version_flag(true) 16019625d8cSopenharmony_ci .version("1.0.0") 16119625d8cSopenharmony_ci .arg(clap::arg!(version: -b).action(clap::ArgAction::Version)); 16219625d8cSopenharmony_ci cmd.build(); 16319625d8cSopenharmony_ci let arg = cmd 16419625d8cSopenharmony_ci .get_arguments() 16519625d8cSopenharmony_ci .find(|arg| arg.get_id() == "version") 16619625d8cSopenharmony_ci .unwrap(); 16719625d8cSopenharmony_ci assert!(matches!(arg.get_action(), clap::ArgAction::Version)); 16819625d8cSopenharmony_ci } 16919625d8cSopenharmony_ci 17019625d8cSopenharmony_ci #[test] 17119625d8cSopenharmony_ci fn long_version() { 17219625d8cSopenharmony_ci let arg = clap::arg!(-'?' - -version); 17319625d8cSopenharmony_ci assert!(matches!(arg.get_action(), clap::ArgAction::SetTrue)); 17419625d8cSopenharmony_ci 17519625d8cSopenharmony_ci let mut cmd = clap::Command::new("cmd") 17619625d8cSopenharmony_ci .disable_version_flag(true) 17719625d8cSopenharmony_ci .version("1.0.0") 17819625d8cSopenharmony_ci .arg(clap::arg!(-'?' - -version).action(clap::ArgAction::Version)); 17919625d8cSopenharmony_ci cmd.build(); 18019625d8cSopenharmony_ci let arg = cmd 18119625d8cSopenharmony_ci .get_arguments() 18219625d8cSopenharmony_ci .find(|arg| arg.get_id() == "version") 18319625d8cSopenharmony_ci .unwrap(); 18419625d8cSopenharmony_ci assert!(matches!(arg.get_action(), clap::ArgAction::Version)); 18519625d8cSopenharmony_ci } 18619625d8cSopenharmony_ci 18719625d8cSopenharmony_ci #[test] 18819625d8cSopenharmony_ci fn short_with_value() { 18919625d8cSopenharmony_ci let arg = clap::arg!(foo: -b <NUM>); 19019625d8cSopenharmony_ci assert_eq!(arg.get_id(), "foo"); 19119625d8cSopenharmony_ci assert_eq!(arg.get_short(), Some('b')); 19219625d8cSopenharmony_ci assert!(matches!(arg.get_action(), clap::ArgAction::Set)); 19319625d8cSopenharmony_ci assert_eq!(arg.get_num_args(), None); 19419625d8cSopenharmony_ci assert!(!arg.is_required_set()); 19519625d8cSopenharmony_ci assert_eq!(arg.get_help().map(|s| s.to_string()), None); 19619625d8cSopenharmony_ci 19719625d8cSopenharmony_ci let arg = clap::arg!(foo: -'b' <NUM>); 19819625d8cSopenharmony_ci assert_eq!(arg.get_id(), "foo"); 19919625d8cSopenharmony_ci assert_eq!(arg.get_short(), Some('b')); 20019625d8cSopenharmony_ci assert!(matches!(arg.get_action(), clap::ArgAction::Set)); 20119625d8cSopenharmony_ci assert_eq!(arg.get_num_args(), None); 20219625d8cSopenharmony_ci assert!(!arg.is_required_set()); 20319625d8cSopenharmony_ci assert_eq!(arg.get_help().map(|s| s.to_string()), None); 20419625d8cSopenharmony_ci 20519625d8cSopenharmony_ci let arg = clap::arg!(foo: -b <NUM> ...); 20619625d8cSopenharmony_ci assert_eq!(arg.get_id(), "foo"); 20719625d8cSopenharmony_ci assert_eq!(arg.get_short(), Some('b')); 20819625d8cSopenharmony_ci assert!(matches!(arg.get_action(), clap::ArgAction::Append)); 20919625d8cSopenharmony_ci assert_eq!(arg.get_num_args(), None); 21019625d8cSopenharmony_ci assert!(!arg.is_required_set()); 21119625d8cSopenharmony_ci assert_eq!(arg.get_help().map(|s| s.to_string()), None); 21219625d8cSopenharmony_ci 21319625d8cSopenharmony_ci let arg = clap::arg!(foo: -b <NUM> "How to use it"); 21419625d8cSopenharmony_ci assert_eq!(arg.get_id(), "foo"); 21519625d8cSopenharmony_ci assert_eq!(arg.get_short(), Some('b')); 21619625d8cSopenharmony_ci assert!(matches!(arg.get_action(), clap::ArgAction::Set)); 21719625d8cSopenharmony_ci assert_eq!(arg.get_num_args(), None); 21819625d8cSopenharmony_ci assert!(!arg.is_required_set()); 21919625d8cSopenharmony_ci assert_eq!( 22019625d8cSopenharmony_ci arg.get_help().map(|s| s.to_string()), 22119625d8cSopenharmony_ci Some("How to use it".to_owned()) 22219625d8cSopenharmony_ci ); 22319625d8cSopenharmony_ci } 22419625d8cSopenharmony_ci 22519625d8cSopenharmony_ci #[test] 22619625d8cSopenharmony_ci fn positional() { 22719625d8cSopenharmony_ci let arg = clap::arg!(<NUM>); 22819625d8cSopenharmony_ci assert_eq!(arg.get_id(), "NUM"); 22919625d8cSopenharmony_ci assert_eq!(arg.get_value_names(), Some(vec!["NUM".into()].as_slice())); 23019625d8cSopenharmony_ci assert!(matches!(arg.get_action(), clap::ArgAction::Set)); 23119625d8cSopenharmony_ci assert_eq!(arg.get_num_args(), None); 23219625d8cSopenharmony_ci assert!(arg.is_required_set()); 23319625d8cSopenharmony_ci assert_eq!(arg.get_help().map(|s| s.to_string()), None); 23419625d8cSopenharmony_ci 23519625d8cSopenharmony_ci let arg = clap::arg!([NUM]); 23619625d8cSopenharmony_ci assert_eq!(arg.get_id(), "NUM"); 23719625d8cSopenharmony_ci assert_eq!(arg.get_value_names(), Some(vec!["NUM".into()].as_slice())); 23819625d8cSopenharmony_ci assert!(matches!(arg.get_action(), clap::ArgAction::Set)); 23919625d8cSopenharmony_ci assert_eq!(arg.get_num_args(), None); 24019625d8cSopenharmony_ci assert!(!arg.is_required_set()); 24119625d8cSopenharmony_ci assert_eq!(arg.get_help().map(|s| s.to_string()), None); 24219625d8cSopenharmony_ci 24319625d8cSopenharmony_ci let arg = clap::arg!(<NUM>); 24419625d8cSopenharmony_ci assert_eq!(arg.get_id(), "NUM"); 24519625d8cSopenharmony_ci assert_eq!(arg.get_value_names(), Some(vec!["NUM".into()].as_slice())); 24619625d8cSopenharmony_ci assert!(matches!(arg.get_action(), clap::ArgAction::Set)); 24719625d8cSopenharmony_ci assert_eq!(arg.get_num_args(), None); 24819625d8cSopenharmony_ci assert!(arg.is_required_set()); 24919625d8cSopenharmony_ci assert_eq!(arg.get_help().map(|s| s.to_string()), None); 25019625d8cSopenharmony_ci 25119625d8cSopenharmony_ci let arg = clap::arg!(foo: <NUM>); 25219625d8cSopenharmony_ci assert_eq!(arg.get_id(), "foo"); 25319625d8cSopenharmony_ci assert_eq!(arg.get_value_names(), Some(vec!["NUM".into()].as_slice())); 25419625d8cSopenharmony_ci assert!(matches!(arg.get_action(), clap::ArgAction::Set)); 25519625d8cSopenharmony_ci assert_eq!(arg.get_num_args(), None); 25619625d8cSopenharmony_ci assert!(arg.is_required_set()); 25719625d8cSopenharmony_ci assert_eq!(arg.get_help().map(|s| s.to_string()), None); 25819625d8cSopenharmony_ci 25919625d8cSopenharmony_ci let arg = clap::arg!(<NUM> ...); 26019625d8cSopenharmony_ci assert_eq!(arg.get_id(), "NUM"); 26119625d8cSopenharmony_ci assert_eq!(arg.get_value_names(), Some(vec!["NUM".into()].as_slice())); 26219625d8cSopenharmony_ci assert!(matches!(arg.get_action(), clap::ArgAction::Append)); 26319625d8cSopenharmony_ci assert_eq!(arg.get_num_args(), Some((1..).into())); 26419625d8cSopenharmony_ci assert!(arg.is_required_set()); 26519625d8cSopenharmony_ci assert_eq!(arg.get_help().map(|s| s.to_string()), None); 26619625d8cSopenharmony_ci 26719625d8cSopenharmony_ci let arg = clap::arg!(<NUM> "How to use it"); 26819625d8cSopenharmony_ci assert_eq!(arg.get_id(), "NUM"); 26919625d8cSopenharmony_ci assert_eq!(arg.get_value_names(), Some(vec!["NUM".into()].as_slice())); 27019625d8cSopenharmony_ci assert!(matches!(arg.get_action(), clap::ArgAction::Set)); 27119625d8cSopenharmony_ci assert_eq!(arg.get_num_args(), None); 27219625d8cSopenharmony_ci assert!(arg.is_required_set()); 27319625d8cSopenharmony_ci assert_eq!( 27419625d8cSopenharmony_ci arg.get_help().map(|s| s.to_string()), 27519625d8cSopenharmony_ci Some("How to use it".to_owned()) 27619625d8cSopenharmony_ci ); 27719625d8cSopenharmony_ci } 27819625d8cSopenharmony_ci 27919625d8cSopenharmony_ci #[test] 28019625d8cSopenharmony_ci #[cfg(all(feature = "help", featiure = "usage"))] 28119625d8cSopenharmony_ci fn optional_value() { 28219625d8cSopenharmony_ci let mut cmd = clap::Command::new("test").arg(clap::arg!(port: -p [NUM])); 28319625d8cSopenharmony_ci 28419625d8cSopenharmony_ci let r = cmd.try_get_matches_from_mut(["test", "-p42"]); 28519625d8cSopenharmony_ci assert!(r.is_ok(), "{}", r.unwrap_err()); 28619625d8cSopenharmony_ci let m = r.unwrap(); 28719625d8cSopenharmony_ci assert!(m.contains_id("port")); 28819625d8cSopenharmony_ci assert_eq!(m.get_one::<String>("port").unwrap(), "42"); 28919625d8cSopenharmony_ci 29019625d8cSopenharmony_ci let r = cmd.try_get_matches_from_mut(["test", "-p"]); 29119625d8cSopenharmony_ci assert!(r.is_ok(), "{}", r.unwrap_err()); 29219625d8cSopenharmony_ci let m = r.unwrap(); 29319625d8cSopenharmony_ci assert!(m.contains_id("port")); 29419625d8cSopenharmony_ci assert!(m.get_one::<String>("port").is_none()); 29519625d8cSopenharmony_ci 29619625d8cSopenharmony_ci let r = cmd.try_get_matches_from_mut(["test", "-p", "24", "-p", "42"]); 29719625d8cSopenharmony_ci assert!(r.is_ok(), "{}", r.unwrap_err()); 29819625d8cSopenharmony_ci let m = r.unwrap(); 29919625d8cSopenharmony_ci assert!(m.contains_id("port")); 30019625d8cSopenharmony_ci assert_eq!(m.get_one::<String>("port").unwrap(), "42"); 30119625d8cSopenharmony_ci 30219625d8cSopenharmony_ci let mut help = Vec::new(); 30319625d8cSopenharmony_ci cmd.write_help(&mut help).unwrap(); 30419625d8cSopenharmony_ci const HELP: &str = "\ 30519625d8cSopenharmony_ciUsage: test [OPTIONS] 30619625d8cSopenharmony_ci 30719625d8cSopenharmony_ciOptions: 30819625d8cSopenharmony_ci -p [<NUM>] 30919625d8cSopenharmony_ci -h, --help Print help information 31019625d8cSopenharmony_ci"; 31119625d8cSopenharmony_ci snapbox::assert_eq(HELP, help); 31219625d8cSopenharmony_ci } 31319625d8cSopenharmony_ci} 31419625d8cSopenharmony_ci 31519625d8cSopenharmony_cimod arg_impl { 31619625d8cSopenharmony_ci #[test] 31719625d8cSopenharmony_ci fn string_ident() { 31819625d8cSopenharmony_ci let expected = "one"; 31919625d8cSopenharmony_ci let actual = clap::arg_impl! { @string one }; 32019625d8cSopenharmony_ci assert_eq!(actual, expected); 32119625d8cSopenharmony_ci } 32219625d8cSopenharmony_ci 32319625d8cSopenharmony_ci #[test] 32419625d8cSopenharmony_ci fn string_literal() { 32519625d8cSopenharmony_ci let expected = "one"; 32619625d8cSopenharmony_ci let actual = clap::arg_impl! { @string "one" }; 32719625d8cSopenharmony_ci assert_eq!(actual, expected); 32819625d8cSopenharmony_ci } 32919625d8cSopenharmony_ci 33019625d8cSopenharmony_ci #[test] 33119625d8cSopenharmony_ci fn char_ident() { 33219625d8cSopenharmony_ci let expected = 'o'; 33319625d8cSopenharmony_ci let actual = clap::arg_impl! { @char o }; 33419625d8cSopenharmony_ci assert_eq!(actual, expected); 33519625d8cSopenharmony_ci } 33619625d8cSopenharmony_ci 33719625d8cSopenharmony_ci #[test] 33819625d8cSopenharmony_ci fn char_literal() { 33919625d8cSopenharmony_ci let expected = 'o'; 34019625d8cSopenharmony_ci let actual = clap::arg_impl! { @char 'o' }; 34119625d8cSopenharmony_ci assert_eq!(actual, expected); 34219625d8cSopenharmony_ci } 34319625d8cSopenharmony_ci 34419625d8cSopenharmony_ci #[test] 34519625d8cSopenharmony_ci // allow double quoted dashed arg name in square brackets (e.g ["some-arg"]) 34619625d8cSopenharmony_ci fn arg_name_dashed() { 34719625d8cSopenharmony_ci let arg = clap::arg!(["some-arg"] "some arg"); 34819625d8cSopenharmony_ci assert_eq!(arg, clap::Arg::new("some-arg").help("some arg")); 34919625d8cSopenharmony_ci 35019625d8cSopenharmony_ci let m = clap::Command::new("flag") 35119625d8cSopenharmony_ci .arg(arg) 35219625d8cSopenharmony_ci .try_get_matches_from(vec!["", "some-val"]) 35319625d8cSopenharmony_ci .unwrap(); 35419625d8cSopenharmony_ci assert_eq!(m.get_one::<String>("some-arg").unwrap(), "some-val"); 35519625d8cSopenharmony_ci } 35619625d8cSopenharmony_ci 35719625d8cSopenharmony_ci #[test] 35819625d8cSopenharmony_ci // allow double quoted dashed arg value in triangle brackets (e.g <"some-val">) 35919625d8cSopenharmony_ci // test in combination with short argument name (e.g. -v) 36019625d8cSopenharmony_ci fn arg_value_dashed_with_short_arg() { 36119625d8cSopenharmony_ci let arg = clap::arg!(-a <"some-val"> "some arg"); 36219625d8cSopenharmony_ci assert_eq!( 36319625d8cSopenharmony_ci arg, 36419625d8cSopenharmony_ci clap::Arg::new("some-val") 36519625d8cSopenharmony_ci .short('a') 36619625d8cSopenharmony_ci .long("arg") 36719625d8cSopenharmony_ci .value_name("some-val") 36819625d8cSopenharmony_ci ); 36919625d8cSopenharmony_ci 37019625d8cSopenharmony_ci let m = clap::Command::new("cmd") 37119625d8cSopenharmony_ci .arg(arg) 37219625d8cSopenharmony_ci .try_get_matches_from(vec!["", "-a", "val"]) 37319625d8cSopenharmony_ci .unwrap(); 37419625d8cSopenharmony_ci assert_eq!(m.get_one::<String>("some-val").unwrap(), "val"); 37519625d8cSopenharmony_ci } 37619625d8cSopenharmony_ci 37719625d8cSopenharmony_ci #[test] 37819625d8cSopenharmony_ci // allow double quoted dashed arg value in triangle brackets (e.g <"some-val">) 37919625d8cSopenharmony_ci // test in combination with long argument name (e.g. --value) 38019625d8cSopenharmony_ci fn arg_value_dashed_with_long_arg() { 38119625d8cSopenharmony_ci let arg = clap::arg!(-a --arg <"some-val"> "some arg"); 38219625d8cSopenharmony_ci assert_eq!( 38319625d8cSopenharmony_ci arg, 38419625d8cSopenharmony_ci clap::Arg::new("arg") 38519625d8cSopenharmony_ci .short('a') 38619625d8cSopenharmony_ci .long("arg") 38719625d8cSopenharmony_ci .value_name("some-val") 38819625d8cSopenharmony_ci ); 38919625d8cSopenharmony_ci 39019625d8cSopenharmony_ci let m = clap::Command::new("cmd") 39119625d8cSopenharmony_ci .arg(arg) 39219625d8cSopenharmony_ci .try_get_matches_from(vec!["", "--arg", "some-val"]) 39319625d8cSopenharmony_ci .unwrap(); 39419625d8cSopenharmony_ci assert_eq!(m.get_one::<String>("arg").unwrap(), "some-val"); 39519625d8cSopenharmony_ci } 39619625d8cSopenharmony_ci} 397