Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 21 additions & 21 deletions test/unittest/test_argument_parser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,19 @@ TEST_CASE("Optional arguments support short names")
auto parser = argparse::ArgumentParser();
parser.add_argument("-s");

auto const parsed = parser.parse_args(3, cstr_arr{"prog", "-s", "ess"});
auto const args = parser.parse_args(3, cstr_arr{"prog", "-s", "ess"});

CHECK(parsed.get("s"));
CHECK(args.get("s"));
}

TEST_CASE("Optional arguments support long names")
{
auto parser = argparse::ArgumentParser();
parser.add_argument("--long-arg");

auto const parsed = parser.parse_args(3, cstr_arr{"prog", "--long-arg", "value"});
auto const args = parser.parse_args(3, cstr_arr{"prog", "--long-arg", "value"});

CHECK(parsed.get("long_arg"));
CHECK(args.get("long_arg"));
}

TEST_CASE("ArgumentParser adds help argument automatically with short name")
Expand Down Expand Up @@ -68,27 +68,27 @@ TEST_CASE("ArgumentParser does not handle help when requested to handle nothing"
{
auto parser = argparse::ArgumentParser().handle(argparse::Handle::none);

auto const parsed = parser.parse_args(2, cstr_arr{"prog", "-h"});
auto const args = parser.parse_args(2, cstr_arr{"prog", "-h"});

CHECK(parsed.get_value<bool>("help") == true);
CHECK(args.get_value<bool>("help") == true);
}

TEST_CASE("ArgumentParser does not handle help when requested to handle parsing errors")
{
auto parser = argparse::ArgumentParser().handle(argparse::Handle::errors);

auto const parsed = parser.parse_args(2, cstr_arr{"prog", "-h"});
auto const args = parser.parse_args(2, cstr_arr{"prog", "-h"});

CHECK(parsed.get_value<bool>("help") == true);
CHECK(args.get_value<bool>("help") == true);
}

TEST_CASE("ArgumentParser does not handle help when requested to handle version")
{
auto parser = argparse::ArgumentParser().handle(argparse::Handle::version);

auto const parsed = parser.parse_args(2, cstr_arr{"prog", "-h"});
auto const args = parser.parse_args(2, cstr_arr{"prog", "-h"});

CHECK(parsed.get_value<bool>("help") == true);
CHECK(args.get_value<bool>("help") == true);
}

TEST_CASE("ArgumentParser does not handle parsing errors when requested to handle nothing")
Expand Down Expand Up @@ -120,29 +120,29 @@ TEST_CASE("ArgumentParser does not handle version when requested to handle nothi
auto parser = argparse::ArgumentParser().handle(argparse::Handle::none);
parser.add_argument("-v").action(argparse::version);

auto const parsed = parser.parse_args(2, cstr_arr{"prog", "-v"});
auto const args = parser.parse_args(2, cstr_arr{"prog", "-v"});

CHECK(parsed.get_value<bool>("v") == true);
CHECK(args.get_value<bool>("v") == true);
}

TEST_CASE("ArgumentParser does not handle version when requested to handle errors")
{
auto parser = argparse::ArgumentParser().handle(argparse::Handle::errors);
parser.add_argument("-v").action(argparse::version);

auto const parsed = parser.parse_args(2, cstr_arr{"prog", "-v"});
auto const args = parser.parse_args(2, cstr_arr{"prog", "-v"});

CHECK(parsed.get_value<bool>("v") == true);
CHECK(args.get_value<bool>("v") == true);
}

TEST_CASE("ArgumentParser does not handle version when requested to handle help")
{
auto parser = argparse::ArgumentParser().handle(argparse::Handle::help);
parser.add_argument("-v").action(argparse::version);

auto const parsed = parser.parse_args(2, cstr_arr{"prog", "-v"});
auto const args = parser.parse_args(2, cstr_arr{"prog", "-v"});

CHECK(parsed.get_value<bool>("v") == true);
CHECK(args.get_value<bool>("v") == true);
}

TEST_CASE("ArgumentParser uses first command-line parameter as its name when executed from current directory using no separators in usage message")
Expand Down Expand Up @@ -345,7 +345,7 @@ TEST_CASE("Requesting non-existing argument throws an exception")
{
auto parser = argparse::ArgumentParser();
parser.add_argument("foo");
auto args = parser.parse_args(2, cstr_arr{"prog", "val"});
auto const args = parser.parse_args(2, cstr_arr{"prog", "val"});

CHECK_THROWS_WITH_AS(args.get("boo"), "no such argument: 'boo'", argparse::name_error);
}
Expand All @@ -354,7 +354,7 @@ TEST_CASE("Requesting non-existing argument throws an exception")
{
auto parser = argparse::ArgumentParser();
parser.add_argument("--foo");
auto args = parser.parse_args(3, cstr_arr{"prog", "--foo", "val"});
auto const args = parser.parse_args(3, cstr_arr{"prog", "--foo", "val"});

CHECK_THROWS_WITH_AS(args.get("boo"), "no such argument: 'boo'", argparse::name_error);
}
Expand All @@ -363,7 +363,7 @@ TEST_CASE("Requesting wrong argument type throws an exception")
{
auto parser = argparse::ArgumentParser();
parser.add_argument("pos").type<int>();
auto args = parser.parse_args(2, cstr_arr{"prog", "3"});
auto const args = parser.parse_args(2, cstr_arr{"prog", "3"});

CHECK_THROWS_WITH_AS(args.get_value<double>("pos"), doctest::Contains("wrong type"), argparse::type_error);
}
Expand All @@ -372,7 +372,7 @@ TEST_CASE("Requesting wrong argument type throws an exception")
{
auto parser = argparse::ArgumentParser();
parser.add_argument("pos");
auto args = parser.parse_args(2, cstr_arr{"prog", "val"});
auto const args = parser.parse_args(2, cstr_arr{"prog", "val"});

CHECK_THROWS_WITH_AS(args.get_value<int>("pos"), doctest::Contains("wrong type"), argparse::type_error);
}
Expand All @@ -381,7 +381,7 @@ TEST_CASE("Requesting wrong argument type throws an exception")
{
auto parser = argparse::ArgumentParser();
parser.add_argument("pos").type<int>();
auto args = parser.parse_args(2, cstr_arr{"prog", "3"});
auto const args = parser.parse_args(2, cstr_arr{"prog", "3"});

CHECK_THROWS_WITH_AS(args.get_value("pos"), doctest::Contains("wrong type"), argparse::type_error);
}
24 changes: 12 additions & 12 deletions test/unittest/test_parsing.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,11 @@ TEST_CASE("Parsing mixed positional and optional arguments give same result no m
parser2.add_argument("-f");
parser2.add_argument("pos1");
auto const argv = cstr_arr{"prog", "val1", "-f", "a"};
auto const parsed1 = parser1.parse_args(4, argv);
auto const parsed2 = parser2.parse_args(4, argv);
auto const args1 = parser1.parse_args(4, argv);
auto const args2 = parser2.parse_args(4, argv);

CHECK(parsed1.get_value("pos1") == parsed2.get_value("pos1"));
CHECK(parsed1.get_value("f") == parsed2.get_value("f"));
CHECK(args1.get_value("pos1") == args2.get_value("pos1"));
CHECK(args1.get_value("f") == args2.get_value("f"));
}

TEST_CASE("Parsing mixed positional and optional arguments give same result no matter the order for optional and positional")
Expand All @@ -61,11 +61,11 @@ TEST_CASE("Parsing mixed positional and optional arguments give same result no m
parser2.add_argument("-f");
parser2.add_argument("pos1");
auto const argv = cstr_arr{"prog", "-f", "a", "val1"};
auto const parsed1 = parser1.parse_args(4, argv);
auto const parsed2 = parser2.parse_args(4, argv);
auto const args1 = parser1.parse_args(4, argv);
auto const args2 = parser2.parse_args(4, argv);

CHECK(parsed1.get_value("pos1") == parsed2.get_value("pos1"));
CHECK(parsed1.get_value("f") == parsed2.get_value("f"));
CHECK(args1.get_value("pos1") == args2.get_value("pos1"));
CHECK(args1.get_value("f") == args2.get_value("f"));
}

TEST_CASE("Parsing -- pseudo argument does not throw")
Expand All @@ -88,9 +88,9 @@ TEST_CASE("Arguments past the -- pseudo argument are treated as positional for p
auto parser = argparse::ArgumentParser().handle(argparse::Handle::none);
parser.add_argument("pos");

auto const parsed = parser.parse_args(3, cstr_arr{"prog", "--", "-o"});
auto const args = parser.parse_args(3, cstr_arr{"prog", "--", "-o"});

CHECK(parsed.get_value("pos") == "-o");
CHECK(args.get_value("pos") == "-o");
}

TEST_CASE("Positional argument does not consume unrecognised optional argument")
Expand Down Expand Up @@ -157,7 +157,7 @@ TEST_CASE("Parsing")
parser.add_argument("--opt1");
parser.add_argument("--opt2");

auto args = parser.parse_args(6, cstr_arr{"prog", "p1", "--opt1", "o1", "--", "--opt2"});
auto const args = parser.parse_args(6, cstr_arr{"prog", "p1", "--opt1", "o1", "--", "--opt2"});

CHECK(args.get_value("pos1") == "p1");
CHECK(args.get_value("pos2") == "--opt2");
Expand All @@ -170,7 +170,7 @@ TEST_CASE("Parsing")
auto parser = argparse::ArgumentParser().handle(argparse::Handle::none);
parser.add_argument("pos").nargs(argparse::zero_or_more);

auto args = parser.parse_args(5, cstr_arr{"prog", "p1", "p2", "--", "p3"});
auto const args = parser.parse_args(5, cstr_arr{"prog", "p1", "p2", "--", "p3"});

CHECK(args.get_value<std::vector<std::string>>("pos") == std::vector{"p1"s, "p2"s, "p3"s});
}
Expand Down
Loading