From 952fa4d2466d2c8df37ee1aa0bb30a84ed43301e Mon Sep 17 00:00:00 2001 From: Alexander Kuvaev Date: Sun, 6 Sep 2015 22:22:37 +0300 Subject: [PATCH] tests: conflict override tests --- tests/posix_compatible.rs | 58 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/tests/posix_compatible.rs b/tests/posix_compatible.rs index a6fa6559..7b70c84e 100644 --- a/tests/posix_compatible.rs +++ b/tests/posix_compatible.rs @@ -1,6 +1,6 @@ extern crate clap; -use clap::{App, Arg}; +use clap::{App, Arg, ClapErrorType }; #[test] fn posix_compatible_flags_long() { @@ -91,4 +91,60 @@ fn posix_compatible_opts_short() { assert!(!m.is_present("color")); assert!(m.is_present("flag")); assert_eq!(m.value_of("flag").unwrap(), "other"); +} + +#[test] +fn conflict_overriden() { + let m = App::new("conflict_overriden") + .arg(Arg::from_usage("-f, --flag 'some flag'") + .conflicts_with("debug")) + .arg(Arg::from_usage("-d, --debug 'other flag'")) + .arg(Arg::from_usage("-c, --color 'third flag'") + .mutually_overrides_with("flag")) + .get_matches_from(vec!["", "-f", "-c", "-d"]); + assert!(m.is_present("color")); + assert!(!m.is_present("flag")); + assert!(m.is_present("debug")); +} + +#[test] +fn conflict_overriden_2() { + let result = App::new("conflict_overriden") + .arg(Arg::from_usage("-f, --flag 'some flag'") + .conflicts_with("debug")) + .arg(Arg::from_usage("-d, --debug 'other flag'")) + .arg(Arg::from_usage("-c, --color 'third flag'") + .mutually_overrides_with("flag")) + .get_matches_from_safe(vec!["", "-f", "-d", "-c"]); + assert!(result.is_err()); + let err = result.err().unwrap(); + assert_eq!(err.error_type, ClapErrorType::ArgumentConflict); +} + +#[test] +fn conflict_overriden_3() { + let result = App::new("conflict_overriden") + .arg(Arg::from_usage("-f, --flag 'some flag'") + .conflicts_with("debug")) + .arg(Arg::from_usage("-d, --debug 'other flag'")) + .arg(Arg::from_usage("-c, --color 'third flag'") + .mutually_overrides_with("flag")) + .get_matches_from_safe(vec!["", "-d", "-c", "-f"]); + assert!(result.is_err()); + let err = result.err().unwrap(); + assert_eq!(err.error_type, ClapErrorType::ArgumentConflict); +} + +#[test] +fn conflict_overriden_4() { + let m = App::new("conflict_overriden") + .arg(Arg::from_usage("-f, --flag 'some flag'") + .conflicts_with("debug")) + .arg(Arg::from_usage("-d, --debug 'other flag'")) + .arg(Arg::from_usage("-c, --color 'third flag'") + .mutually_overrides_with("flag")) + .get_matches_from(vec!["", "-d", "-f", "-c"]); + assert!(m.is_present("color")); + assert!(!m.is_present("flag")); + assert!(m.is_present("debug")); } \ No newline at end of file