From 6d445ff03d7cdc85c90b053e6626d1d126d20994 Mon Sep 17 00:00:00 2001 From: Henry Fredrick Schreiner Date: Wed, 15 Mar 2017 08:54:31 -0400 Subject: [PATCH] Adding test and better positional help output --- include/CLI/Option.hpp | 4 ++-- tests/HelpTest.cpp | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/include/CLI/Option.hpp b/include/CLI/Option.hpp index d3cf7594..15693b7f 100644 --- a/include/CLI/Option.hpp +++ b/include/CLI/Option.hpp @@ -312,8 +312,8 @@ public: /// The name and any extras needed for positionals std::string help_positional() const { std::string out = pname_; - if(get_expected()<1) - out = out + "x" + std::to_string(get_expected()); + if(get_expected()>1) + out = out + "(" + std::to_string(get_expected()) + "x)"; else if(get_expected()==-1) out = out + "..."; out = get_required() ? out : "["+out+"]"; diff --git a/tests/HelpTest.cpp b/tests/HelpTest.cpp index 2ee1117a..54d667ec 100644 --- a/tests/HelpTest.cpp +++ b/tests/HelpTest.cpp @@ -93,6 +93,41 @@ TEST(THelp, RequiredPositionalAndOptions) { EXPECT_THAT(help, HasSubstr("Usage: program [OPTIONS] something")); } + +TEST(THelp, MultiOpts) { + CLI::App app{"My prog"}; + std::vector x, y; + app.add_option("-q,--quick", x, "Disc")->expected(2); + app.add_option("-v,--vals", y, "Other"); + + std::string help = app.help(); + + EXPECT_THAT(help, HasSubstr("My prog")); + EXPECT_THAT(help, Not(HasSubstr("Positionals:"))); + EXPECT_THAT(help, HasSubstr("Usage: program [OPTIONS]")); + EXPECT_THAT(help, HasSubstr("INT x 2")); + EXPECT_THAT(help, HasSubstr("INT ...")); +} + +TEST(THelp, MultiPosOpts) { + CLI::App app{"My prog"}; + std::vector x, y; + app.add_option("quick", x, "Disc")->expected(2); + app.add_option("vals", y, "Other"); + + std::string help = app.help(); + + EXPECT_THAT(help, HasSubstr("My prog")); + EXPECT_THAT(help, HasSubstr("Positionals:")); + EXPECT_THAT(help, HasSubstr("Usage: program [OPTIONS]")); + EXPECT_THAT(help, HasSubstr("INT x 2")); + EXPECT_THAT(help, HasSubstr("INT ...")); + EXPECT_THAT(help, HasSubstr("[quick(2x)]")); + EXPECT_THAT(help, HasSubstr("[vals...]")); +} + + + TEST(THelp, EnvName) { CLI::App app{"My prog"}; std::string input;