From 62f36b8686b459889943c28fde77898d3c909c6e Mon Sep 17 00:00:00 2001 From: Pavel Belikov Date: Fri, 13 Oct 2017 21:29:30 +0300 Subject: add Options::Required flag --- test.cxx | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'test.cxx') diff --git a/test.cxx b/test.cxx index c7dbb8b..e8a7d81 100644 --- a/test.cxx +++ b/test.cxx @@ -570,6 +570,26 @@ TEST_CASE("Kick-out should work via all flags and value flags", "[args]") REQUIRE(d3); } +TEST_CASE("Required flags work as expected", "[args]") +{ + args::ArgumentParser parser1("Test command"); + args::ValueFlag foo(parser1, "foo", "foo", {'f', "foo"}, args::Options::Required); + args::ValueFlag bar(parser1, "bar", "bar", {'b', "bar"}); + + parser1.ParseArgs(std::vector{"-f", "42"}); + REQUIRE(foo.Get() == 42); + + REQUIRE_THROWS_AS(parser1.ParseArgs(std::vector{"-b4"}), args::RequiredError); + + args::ArgumentParser parser2("Test command"); + args::Positional pos1(parser2, "a", "a"); + REQUIRE_NOTHROW(parser2.ParseArgs(std::vector{})); + + args::ArgumentParser parser3("Test command"); + args::Positional pos2(parser3, "a", "a", args::Options::Required); + REQUIRE_THROWS_AS(parser3.ParseArgs(std::vector{}), args::RequiredError); +} + #undef ARGS_HXX #define ARGS_TESTNAMESPACE #define ARGS_NOEXCEPT -- cgit v1.2.1