return "unknown";
}
+static bool parse_bool(std::string str)
+{
+ std::transform(str.begin(), str.end(), str.begin(), ::tolower);
+ std::istringstream is(str);
+ bool b;
+ is >> (str.size() > 1 ? std::boolalpha : std::noboolalpha) >> b;
+ return b;
+}
+
static void from_str(const String& str, int type, void* dst)
{
std::stringstream ss(str.c_str());
{
std::string temp;
ss >> temp;
- *(bool*) dst = temp == "true";
+ *(bool*) dst = parse_bool(temp);
}
else if( type == Param::UNSIGNED_INT )
ss >> *(unsigned*)dst;
if (space_delete)
v = cat_string(v);
- // the key was neither specified nor has it a default value
+ // the key was neither specified nor has a default value
if((v.empty() && type != Param::STRING) || v == noneValue) {
impl->error = true;
impl->error_message = impl->error_message + "Missing parameter: '" + name + "'\n";
String v = impl->data[i].def_value;
if (space_delete == true) v = cat_string(v);
- // the key was neither specified nor has it a default value
+ // the key was neither specified nor has a default value
if((v.empty() && type != Param::STRING) || v == noneValue) {
impl->error = true;
impl->error_message = impl->error_message + format("Missing parameter #%d\n", index);
cv::CommandLineParser parser(argc, argv, keys);
EXPECT_TRUE(parser.has("help"));
EXPECT_TRUE(parser.has("h"));
+ EXPECT_TRUE(parser.get<bool>("help"));
+ EXPECT_TRUE(parser.get<bool>("h"));
EXPECT_TRUE(parser.has("info"));
EXPECT_TRUE(parser.has("i"));
+ EXPECT_TRUE(parser.get<bool>("info"));
+ EXPECT_TRUE(parser.get<bool>("i"));
+ EXPECT_TRUE(parser.get<bool>("true"));
+ EXPECT_TRUE(parser.get<bool>("t"));
EXPECT_FALSE(parser.has("n"));
EXPECT_FALSE(parser.has("unused"));
}
cv::CommandLineParser parser(argc, argv, keys);
EXPECT_TRUE(parser.has("help"));
EXPECT_TRUE(parser.has("h"));
+ EXPECT_TRUE(parser.get<bool>("help"));
+ EXPECT_TRUE(parser.get<bool>("h"));
EXPECT_TRUE(parser.has("info"));
EXPECT_TRUE(parser.has("i"));
+ EXPECT_TRUE(parser.get<bool>("info"));
+ EXPECT_TRUE(parser.get<bool>("i"));
+ EXPECT_TRUE(parser.get<bool>("true"));
+ EXPECT_TRUE(parser.get<bool>("t"));
EXPECT_FALSE(parser.has("n"));
EXPECT_FALSE(parser.has("unused"));
}
cv::CommandLineParser parser(argc, argv, keys);
EXPECT_TRUE(parser.has("help"));
EXPECT_TRUE(parser.has("h"));
+ EXPECT_TRUE(parser.get<bool>("help"));
+ EXPECT_TRUE(parser.get<bool>("h"));
EXPECT_TRUE(parser.has("info"));
EXPECT_TRUE(parser.has("i"));
+ EXPECT_TRUE(parser.get<bool>("info"));
+ EXPECT_TRUE(parser.get<bool>("i"));
+ EXPECT_TRUE(parser.get<bool>("true"));
+ EXPECT_TRUE(parser.get<bool>("t"));
EXPECT_FALSE(parser.has("n"));
EXPECT_FALSE(parser.has("unused"));
}
cv::CommandLineParser parser(argc, argv, keys);
EXPECT_TRUE(parser.has("help"));
EXPECT_TRUE(parser.has("h"));
+ EXPECT_FALSE(parser.get<bool>("help"));
+ EXPECT_FALSE(parser.get<bool>("h"));
EXPECT_TRUE(parser.has("info"));
EXPECT_TRUE(parser.has("i"));
+ EXPECT_FALSE(parser.get<bool>("info"));
+ EXPECT_FALSE(parser.get<bool>("i"));
+ EXPECT_TRUE(parser.get<bool>("true"));
+ EXPECT_TRUE(parser.get<bool>("t"));
EXPECT_FALSE(parser.has("n"));
EXPECT_FALSE(parser.has("unused"));
}
EXPECT_TRUE(parser.get<bool>("h"));
EXPECT_TRUE(parser.get<bool>("info"));
EXPECT_TRUE(parser.get<bool>("i"));
+ EXPECT_TRUE(parser.get<bool>("true"));
+ EXPECT_TRUE(parser.get<bool>("t"));
}
TEST(CommandLineParser, testBoolOption_TrueValues)
{
- const char* argv[] = {"<bin>", "-h=TRUE", "--info=true"};
- const int argc = 3;
+ const char* argv[] = {"<bin>", "-h=TrUe", "-t=1", "--info=true", "-n=truE"};
+ const int argc = 5;
cv::CommandLineParser parser(argc, argv, keys);
- //EXPECT_TRUE(parser.get<bool>("help"));
- //EXPECT_TRUE(parser.get<bool>("h"));
+ EXPECT_TRUE(parser.get<bool>("help"));
+ EXPECT_TRUE(parser.get<bool>("h"));
EXPECT_TRUE(parser.get<bool>("info"));
EXPECT_TRUE(parser.get<bool>("i"));
- EXPECT_FALSE(parser.get<bool>("unused"));
- EXPECT_FALSE(parser.get<bool>("n"));
+ EXPECT_TRUE(parser.get<bool>("true"));
+ EXPECT_TRUE(parser.get<bool>("t"));
+ EXPECT_TRUE(parser.get<bool>("unused"));
+ EXPECT_TRUE(parser.get<bool>("n"));
}
TEST(CommandLineParser, testBoolOption_FalseValues)
{
- const char* argv[] = {"<bin>", "--help=FALSE", "-i=false"};
- const int argc = 3;
+ const char* argv[] = {"<bin>", "--help=FALSE", "-t=FaLsE", "-i=false", "-n=0"};
+ const int argc = 5;
cv::CommandLineParser parser(argc, argv, keys);
EXPECT_FALSE(parser.get<bool>("help"));
EXPECT_FALSE(parser.get<bool>("h"));
EXPECT_FALSE(parser.get<bool>("info"));
EXPECT_FALSE(parser.get<bool>("i"));
+ EXPECT_FALSE(parser.get<bool>("true"));
+ EXPECT_FALSE(parser.get<bool>("t"));
+ EXPECT_FALSE(parser.get<bool>("unused"));
+ EXPECT_FALSE(parser.get<bool>("n"));
}