aboutsummaryrefslogtreecommitdiff
path: root/structopt/tests/options.rs
diff options
context:
space:
mode:
Diffstat (limited to 'structopt/tests/options.rs')
-rw-r--r--structopt/tests/options.rs336
1 files changed, 0 insertions, 336 deletions
diff --git a/structopt/tests/options.rs b/structopt/tests/options.rs
deleted file mode 100644
index 803abb4..0000000
--- a/structopt/tests/options.rs
+++ /dev/null
@@ -1,336 +0,0 @@
-// Copyright 2018 Guillaume Pinot (@TeXitoi) <texitoi@texitoi.eu>
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-use structopt::StructOpt;
-
-#[test]
-fn required_option() {
- #[derive(StructOpt, PartialEq, Debug)]
- struct Opt {
- #[structopt(short, long)]
- arg: i32,
- }
- assert_eq!(
- Opt { arg: 42 },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test", "-a42"]))
- );
- assert_eq!(
- Opt { arg: 42 },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test", "-a", "42"]))
- );
- assert_eq!(
- Opt { arg: 42 },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test", "--arg", "42"]))
- );
- assert!(Opt::clap().get_matches_from_safe(&["test"]).is_err());
- assert!(Opt::clap()
- .get_matches_from_safe(&["test", "-a42", "-a24"])
- .is_err());
-}
-
-#[test]
-fn optional_option() {
- #[derive(StructOpt, PartialEq, Debug)]
- struct Opt {
- #[structopt(short)]
- arg: Option<i32>,
- }
- assert_eq!(
- Opt { arg: Some(42) },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test", "-a42"]))
- );
- assert_eq!(
- Opt { arg: None },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test"]))
- );
- assert!(Opt::clap()
- .get_matches_from_safe(&["test", "-a42", "-a24"])
- .is_err());
-}
-
-#[test]
-fn option_with_default() {
- #[derive(StructOpt, PartialEq, Debug)]
- struct Opt {
- #[structopt(short, default_value = "42")]
- arg: i32,
- }
- assert_eq!(
- Opt { arg: 24 },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test", "-a24"]))
- );
- assert_eq!(
- Opt { arg: 42 },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test"]))
- );
- assert!(Opt::clap()
- .get_matches_from_safe(&["test", "-a42", "-a24"])
- .is_err());
-}
-
-#[test]
-fn option_with_raw_default() {
- #[derive(StructOpt, PartialEq, Debug)]
- struct Opt {
- #[structopt(short, default_value = "42")]
- arg: i32,
- }
- assert_eq!(
- Opt { arg: 24 },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test", "-a24"]))
- );
- assert_eq!(
- Opt { arg: 42 },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test"]))
- );
- assert!(Opt::clap()
- .get_matches_from_safe(&["test", "-a42", "-a24"])
- .is_err());
-}
-
-#[test]
-fn options() {
- #[derive(StructOpt, PartialEq, Debug)]
- struct Opt {
- #[structopt(short, long)]
- arg: Vec<i32>,
- }
- assert_eq!(
- Opt { arg: vec![24] },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test", "-a24"]))
- );
- assert_eq!(
- Opt { arg: vec![] },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test"]))
- );
- assert_eq!(
- Opt { arg: vec![24, 42] },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test", "-a24", "--arg", "42"]))
- );
-}
-
-#[test]
-fn empy_default_value() {
- #[derive(StructOpt, PartialEq, Debug)]
- struct Opt {
- #[structopt(short, default_value = "")]
- arg: String,
- }
- assert_eq!(Opt { arg: "".into() }, Opt::from_iter(&["test"]));
- assert_eq!(
- Opt { arg: "foo".into() },
- Opt::from_iter(&["test", "-afoo"])
- );
-}
-
-#[test]
-fn option_from_str() {
- #[derive(Debug, PartialEq)]
- struct A;
-
- impl<'a> From<&'a str> for A {
- fn from(_: &str) -> A {
- A
- }
- }
-
- #[derive(Debug, StructOpt, PartialEq)]
- struct Opt {
- #[structopt(parse(from_str))]
- a: Option<A>,
- }
-
- assert_eq!(Opt { a: None }, Opt::from_iter(&["test"]));
- assert_eq!(Opt { a: Some(A) }, Opt::from_iter(&["test", "foo"]));
-}
-
-#[test]
-fn optional_argument_for_optional_option() {
- #[derive(StructOpt, PartialEq, Debug)]
- struct Opt {
- #[structopt(short)]
- #[allow(clippy::option_option)]
- arg: Option<Option<i32>>,
- }
- assert_eq!(
- Opt {
- arg: Some(Some(42))
- },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test", "-a42"]))
- );
- assert_eq!(
- Opt { arg: Some(None) },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test", "-a"]))
- );
- assert_eq!(
- Opt { arg: None },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test"]))
- );
- assert!(Opt::clap()
- .get_matches_from_safe(&["test", "-a42", "-a24"])
- .is_err());
-}
-
-#[test]
-fn two_option_options() {
- #[derive(StructOpt, PartialEq, Debug)]
- #[allow(clippy::option_option)]
- struct Opt {
- #[structopt(short)]
- arg: Option<Option<i32>>,
-
- #[structopt(long)]
- field: Option<Option<String>>,
- }
- assert_eq!(
- Opt {
- arg: Some(Some(42)),
- field: Some(Some("f".into()))
- },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test", "-a42", "--field", "f"]))
- );
- assert_eq!(
- Opt {
- arg: Some(Some(42)),
- field: Some(None)
- },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test", "-a42", "--field"]))
- );
- assert_eq!(
- Opt {
- arg: Some(None),
- field: Some(None)
- },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test", "-a", "--field"]))
- );
- assert_eq!(
- Opt {
- arg: Some(None),
- field: Some(Some("f".into()))
- },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test", "-a", "--field", "f"]))
- );
- assert_eq!(
- Opt {
- arg: None,
- field: Some(None)
- },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test", "--field"]))
- );
- assert_eq!(
- Opt {
- arg: None,
- field: None
- },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test"]))
- );
-}
-
-#[test]
-fn optional_vec() {
- #[derive(StructOpt, PartialEq, Debug)]
- struct Opt {
- #[structopt(short)]
- arg: Option<Vec<i32>>,
- }
- assert_eq!(
- Opt { arg: Some(vec![1]) },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test", "-a", "1"]))
- );
-
- assert_eq!(
- Opt {
- arg: Some(vec![1, 2])
- },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test", "-a1", "-a2"]))
- );
-
- assert_eq!(
- Opt {
- arg: Some(vec![1, 2])
- },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test", "-a1", "-a2", "-a"]))
- );
-
- assert_eq!(
- Opt {
- arg: Some(vec![1, 2])
- },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test", "-a1", "-a", "-a2"]))
- );
-
- assert_eq!(
- Opt {
- arg: Some(vec![1, 2])
- },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test", "-a", "1", "2"]))
- );
-
- assert_eq!(
- Opt {
- arg: Some(vec![1, 2, 3])
- },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test", "-a", "1", "2", "-a", "3"]))
- );
-
- assert_eq!(
- Opt { arg: Some(vec![]) },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test", "-a"]))
- );
-
- assert_eq!(
- Opt { arg: Some(vec![]) },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test", "-a", "-a"]))
- );
-
- assert_eq!(
- Opt { arg: None },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test"]))
- );
-}
-
-#[test]
-fn two_optional_vecs() {
- #[derive(StructOpt, PartialEq, Debug)]
- struct Opt {
- #[structopt(short)]
- arg: Option<Vec<i32>>,
-
- #[structopt(short)]
- b: Option<Vec<i32>>,
- }
-
- assert_eq!(
- Opt {
- arg: Some(vec![1]),
- b: Some(vec![])
- },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test", "-a", "1", "-b"]))
- );
-
- assert_eq!(
- Opt {
- arg: Some(vec![1]),
- b: Some(vec![])
- },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test", "-a", "-b", "-a1"]))
- );
-
- assert_eq!(
- Opt {
- arg: Some(vec![1, 2]),
- b: Some(vec![1, 2])
- },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test", "-a1", "-a2", "-b1", "-b2"]))
- );
-
- assert_eq!(
- Opt { arg: None, b: None },
- Opt::from_clap(&Opt::clap().get_matches_from(&["test"]))
- );
-}