in src/compiler/args.rs [790:858]
fn test_arginfo_process() {
let info = flag!("-foo", FooFlag);
assert_eq!(
info.process("-foo", || None).unwrap(),
arg!(Flag("-foo", FooFlag))
);
let info = take_arg!("-foo", OsString, Separated, Foo);
assert_eq!(
info.clone().process("-foo", || None).unwrap_err(),
ArgParseError::UnexpectedEndOfArgs
);
assert_eq!(
info.process("-foo", || Some("bar".into())).unwrap(),
arg!(WithValue("-foo", Foo("bar"), Separated))
);
let info = take_arg!("-foo", OsString, Concatenated, Foo);
assert_eq!(
info.clone().process("-foo", || None).unwrap(),
arg!(WithValue("-foo", Foo(""), Concatenated))
);
assert_eq!(
info.process("-foobar", || None).unwrap(),
arg!(WithValue("-foo", Foo("bar"), Concatenated))
);
let info = take_arg!("-foo", OsString, Concatenated('='), Foo);
assert_eq!(
info.clone().process("-foo=", || None).unwrap(),
arg!(WithValue("-foo", Foo(""), Concatenated('=')))
);
assert_eq!(
info.process("-foo=bar", || None).unwrap(),
arg!(WithValue("-foo", Foo("bar"), Concatenated('=')))
);
let info = take_arg!("-foo", OsString, CanBeSeparated, Foo);
assert_eq!(
info.clone().process("-foo", || None).unwrap(),
arg!(WithValue("-foo", Foo(""), Concatenated))
);
assert_eq!(
info.clone().process("-foobar", || None).unwrap(),
arg!(WithValue("-foo", Foo("bar"), CanBeSeparated))
);
assert_eq!(
info.process("-foo", || Some("bar".into())).unwrap(),
arg!(WithValue("-foo", Foo("bar"), CanBeConcatenated))
);
let info = take_arg!("-foo", OsString, CanBeSeparated('='), Foo);
assert_eq!(
info.clone().process("-foo", || None).unwrap_err(),
ArgParseError::UnexpectedEndOfArgs
);
assert_eq!(
info.clone().process("-foo=", || None).unwrap(),
arg!(WithValue("-foo", Foo(""), CanBeSeparated('=')))
);
assert_eq!(
info.clone().process("-foo=bar", || None).unwrap(),
arg!(WithValue("-foo", Foo("bar"), CanBeSeparated('=')))
);
assert_eq!(
info.process("-foo", || Some("bar".into())).unwrap(),
arg!(WithValue("-foo", Foo("bar"), CanBeConcatenated('=')))
);
}