aboutsummaryrefslogtreecommitdiff
path: root/test.cxx
diff options
context:
space:
mode:
authorPavel Belikov <pavel.fuchs.belikov@gmail.com>2017-10-13 21:29:30 +0300
committerPavel Belikov <pavel.fuchs.belikov@gmail.com>2017-10-13 21:29:30 +0300
commit62f36b8686b459889943c28fde77898d3c909c6e (patch)
tree101c4aa5d90165e1b2d44bb7dd4cb05004e5e4cb /test.cxx
parentadd readme note (diff)
downloadargs.hxx-62f36b8686b459889943c28fde77898d3c909c6e.tar.xz
add Options::Required flag
Diffstat (limited to 'test.cxx')
-rw-r--r--test.cxx20
1 files changed, 20 insertions, 0 deletions
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<int> foo(parser1, "foo", "foo", {'f', "foo"}, args::Options::Required);
+ args::ValueFlag<int> bar(parser1, "bar", "bar", {'b', "bar"});
+
+ parser1.ParseArgs(std::vector<std::string>{"-f", "42"});
+ REQUIRE(foo.Get() == 42);
+
+ REQUIRE_THROWS_AS(parser1.ParseArgs(std::vector<std::string>{"-b4"}), args::RequiredError);
+
+ args::ArgumentParser parser2("Test command");
+ args::Positional<int> pos1(parser2, "a", "a");
+ REQUIRE_NOTHROW(parser2.ParseArgs(std::vector<std::string>{}));
+
+ args::ArgumentParser parser3("Test command");
+ args::Positional<int> pos2(parser3, "a", "a", args::Options::Required);
+ REQUIRE_THROWS_AS(parser3.ParseArgs(std::vector<std::string>{}), args::RequiredError);
+}
+
#undef ARGS_HXX
#define ARGS_TESTNAMESPACE
#define ARGS_NOEXCEPT