clargs 1.0.0

A command-line arguments parsing library.
Documentation
extern crate clargs;

#[test]
fn subcommand_test1() {
    let mut config = clargs::ParsingConfig::new_all_disabled();
    config.set_subcommand_required(true);

    let args = ["clargs"];
    let result = clargs::parse(args.iter().map(|x| x.to_string()), &config).err().unwrap();
    assert_eq!(result, clargs::ParsingError::MissingRequiredSubcommand);
}

#[test]
fn subcommand_test2() {
    let mut config = clargs::ParsingConfig::new_all_disabled();
    config.set_subcommand_required(true);
    config.set_subcommand_index(true);
    config.set_subcommand_index_value(0);

    let args = ["clargs"];
    let result = clargs::parse(args.iter().map(|x| x.to_string()), &config).err().unwrap();
    assert_eq!(result, clargs::ParsingError::MissingRequiredSubcommand);
}

#[test]
fn subcommand_test3() {
    let mut config = clargs::ParsingConfig::new_all_disabled();
    config.set_subcommand_required(true);
    config.set_subcommand_index(true);
    config.set_subcommand_index_value(0);

    let args = ["clargs", "hello", "world"];
    let result = clargs::parse(args.iter().map(|x| x.to_string()), &config).err().unwrap();
    assert_eq!(result, clargs::ParsingError::UnrecognizedSubcommand(String::from("hello")));
}

#[test]
fn subcommand_test4() {
    let mut config = clargs::ParsingConfig::new_all_disabled();
    config.set_subcommand_required(true);
    config.set_subcommand_index(true);
    config.set_subcommand_index_value(1);

    let args = ["clargs", "hello", "world"];
    let result = clargs::parse(args.iter().map(|x| x.to_string()), &config).err().unwrap();
    assert_eq!(result, clargs::ParsingError::UnrecognizedSubcommand(String::from("world")));
}

#[test]
fn subcommand_test5() {
    let mut config = clargs::ParsingConfig::new_all_disabled();
    config.set_subcommand_required(true);
    config.set_subcommand_index(true);
    config.set_subcommand_index_value(2);

    let args = ["clargs", "hello", "world"];
    let result = clargs::parse(args.iter().map(|x| x.to_string()), &config).err().unwrap();
    assert_eq!(result, clargs::ParsingError::MissingRequiredSubcommand);
}

#[test]
fn subcommand_test6() {
    let mut config = clargs::ParsingConfig::new_all_disabled();
    config.set_subcommand_completion(true);
    config.set_subcommand_index(true);
    config.set_subcommand_index_value(0);
    config.add_subcommand(String::from("cmnd1"));
    config.add_subcommand(String::from("cmnd2"));

    let args = ["clargs", "cmnd"];
    let result = clargs::parse(args.iter().map(|x| x.to_string()), &config).err().unwrap();
    assert_eq!(result, clargs::ParsingError::AmbiguousSubcommand(String::from("cmnd"), vec![String::from("cmnd1"), String::from("cmnd2")]));
}

#[test]
fn subcommand_test7() {
    let mut config = clargs::ParsingConfig::new_all_disabled();
    config.set_subcommand_completion(true);
    config.set_subcommand_index(true);
    config.set_subcommand_index_value(2);
    config.add_subcommand(String::from("cmnd-abcde"));
    config.add_subcommand(String::from("cmnd-01234"));

    let args = ["clargs", "hello", "world", "cmnd-a", "unnamed"];
    let result = clargs::parse(args.iter().map(|x| x.to_string()), &config).unwrap();

    assert_eq!(result.unnamed_params(), &vec![String::from("hello"), String::from("world")]);
    assert_eq!(result.get_subcommand(), Some("cmnd-abcde"));
    assert_eq!(result.subcommand_args(), &vec![String::from("cmnd-abcde"), String::from("unnamed")]);
}