CommandLineParser: add special <none> value to disallow empty strings
some mandatory string keys like paths must not be empty. Add the special default value `<none>` so the CommandLineParser can enforce this and generate an according error message for us.
This commit is contained in:
@@ -142,9 +142,8 @@ TEST(CommandLineParser, testPositional_noArgs)
|
||||
EXPECT_EQ("default1", parser.get<String>("@arg1"));
|
||||
EXPECT_EQ("default1", parser.get<String>(0));
|
||||
|
||||
parser.get<String>("@arg2");
|
||||
parser.get<String>(1);
|
||||
EXPECT_TRUE(parser.check());
|
||||
EXPECT_EQ("", parser.get<String>("@arg2"));
|
||||
EXPECT_EQ("", parser.get<String>(1));
|
||||
}
|
||||
|
||||
TEST(CommandLineParser, testPositional_default)
|
||||
@@ -186,4 +185,22 @@ TEST(CommandLineParser, testPositional_withFlagsAfter)
|
||||
EXPECT_EQ("test2", parser.get<String>(1));
|
||||
}
|
||||
|
||||
TEST(CommandLineParser, testEmptyStringValue)
|
||||
{
|
||||
static const char * const keys3 =
|
||||
"{ @pos0 | | empty default value }"
|
||||
"{ @pos1 | <none> | forbid empty default value }";
|
||||
|
||||
const char* argv[] = {"<bin>"};
|
||||
const int argc = 1;
|
||||
cv::CommandLineParser parser(argc, argv, keys3);
|
||||
// EXPECT_TRUE(parser.has("@pos0"));
|
||||
EXPECT_EQ("", parser.get<String>("@pos0"));
|
||||
EXPECT_TRUE(parser.check());
|
||||
|
||||
EXPECT_FALSE(parser.has("@pos1"));
|
||||
parser.get<String>(1);
|
||||
EXPECT_FALSE(parser.check());
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
Reference in New Issue
Block a user