aboutsummaryrefslogtreecommitdiff
path: root/test.cxx
diff options
context:
space:
mode:
authorPavel Belikov <pavel.fuchs.belikov@gmail.com>2017-11-12 16:34:21 +0300
committerPavel Belikov <pavel.fuchs.belikov@gmail.com>2017-11-12 16:45:09 +0300
commitda501db8a06b31bf771767302ddad065524d5e67 (patch)
treef1ea4ecf6b925375bae94bbcad8ec6603d3d32fc /test.cxx
parentMerge pull request #41 from pavel-belikov/fix-uninitialized-values (diff)
downloadargs.hxx-da501db8a06b31bf771767302ddad065524d5e67.tar.xz
add HelpParams::proglineShowFlags
Diffstat (limited to 'test.cxx')
-rw-r--r--test.cxx49
1 files changed, 49 insertions, 0 deletions
diff --git a/test.cxx b/test.cxx
index ba4d5f8..3376059 100644
--- a/test.cxx
+++ b/test.cxx
@@ -909,6 +909,55 @@ TEST_CASE("Global options work as expected", "[args]")
REQUIRE_NOTHROW(p.ParseArgs(std::vector<std::string>{"b", "-f"}));
}
+TEST_CASE("GetProgramLine works as expected", "[args]")
+{
+ args::ArgumentParser p("parser");
+ args::Flag g(p, "g", "g", {'g'}, args::Options::Global);
+ args::Flag hidden(p, "hidden", "hidden flag", {'h'}, args::Options::Hidden);
+ args::Command a(p, "a", "command a", [](args::Subparser &s)
+ {
+ args::ValueFlag<std::string> f(s, "STRING", "my f flag", {'f', "f-long"}, args::Options::Required);
+ args::Positional<std::string> pos(s, "positional", "positional", args::Options::Required);
+ s.Parse();
+ });
+
+ args::Command b(p, "b", "command b");
+ args::ValueFlag<std::string> f(b, "STRING", "my f flag", {'f'}, args::Options::Required);
+ args::Positional<std::string> pos(b, "positional", "positional");
+
+ auto line = [&](args::Command &element)
+ {
+ p.Reset();
+ auto strings = element.GetCommandProgramLine(p.helpParams);
+ std::string res;
+ for (const std::string &s: strings)
+ {
+ if (!res.empty())
+ {
+ res += ' ';
+ }
+
+ res += s;
+ }
+
+ return res;
+ };
+
+ REQUIRE(line(p) == "COMMAND {OPTIONS}");
+ REQUIRE(line(a) == "a positional {OPTIONS}");
+ REQUIRE(line(b) == "b [positional] {OPTIONS}");
+
+ p.helpParams.proglineShowFlags = true;
+ REQUIRE(line(p) == "COMMAND [-g]");
+ REQUIRE(line(a) == "a --f-long <STRING> positional");
+ REQUIRE(line(b) == "b -f <STRING> [positional]");
+
+ p.helpParams.proglinePreferShortFlags = true;
+ REQUIRE(line(p) == "COMMAND [-g]");
+ REQUIRE(line(a) == "a -f <STRING> positional");
+ REQUIRE(line(b) == "b -f <STRING> [positional]");
+}
+
#undef ARGS_HXX
#define ARGS_TESTNAMESPACE
#define ARGS_NOEXCEPT