37 void TestParser(
const char *usage,
int argc,
const char **const_argv) {
39 char **argv =
const_cast<char **
>(const_argv);
45 const char *const_argv[] = {
"Progname",
"--foo_int",
"3",
"file1.h",
"file2.h"};
47 char **argv =
const_cast<char **
>(const_argv);
58TEST_F(CommandlineflagsTest, PrintUsageAndExit) {
59 const char* argv[] = {
"Progname",
"--help" };
60 EXPECT_EXIT(TestParser(
"Progname [flags]",
countof(argv), argv),
61 ::testing::ExitedWithCode(0),
62 "USAGE: Progname \\[flags\\]");
67 const char *argv[] = {
"",
"--test_nonexistent_flag"};
68 EXPECT_EXIT(TestParser(
countof(argv), argv), ::testing::ExitedWithCode(1),
69 "ERROR: Non-existent flag");
73 const char *argv[] = {
"",
"--foo_int=3",
"--bar_int",
"-4"};
74 TestParser(
countof(argv), argv);
78 const char *arg_no_value[] = {
"",
"--bar_int"};
79 EXPECT_EXIT(TestParser(
countof(arg_no_value), arg_no_value), ::testing::ExitedWithCode(1),
82 const char *arg_invalid_value[] = {
"",
"--bar_int",
"--foo_int=3"};
83 EXPECT_EXIT(TestParser(
countof(arg_invalid_value), arg_invalid_value),
84 ::testing::ExitedWithCode(1),
"ERROR");
86 const char *arg_bad_format[] = {
"",
"--bar_int="};
87 EXPECT_EXIT(TestParser(
countof(arg_bad_format), arg_bad_format), ::testing::ExitedWithCode(1),
92 const char *argv[] = {
"",
"--foo_double=3.14",
"--bar_double",
"1.2"};
93 TestParser(
countof(argv), argv);
98 const char *arg_no_value[] = {
"",
"--bar_double"};
99 EXPECT_EXIT(TestParser(2, arg_no_value), ::testing::ExitedWithCode(1),
"ERROR");
101 const char *arg_bad_format[] = {
"",
"--bar_double="};
102 EXPECT_EXIT(TestParser(2, arg_bad_format), ::testing::ExitedWithCode(1),
"ERROR");
106 const char *argv[] = {
"",
"--foo_string=abc",
"--bar_string",
"def"};
107 TestParser(
countof(argv), argv);
112 const char *arg_no_value[] = {
"",
"--bar_string"};
113 EXPECT_EXIT(TestParser(2, arg_no_value), ::testing::ExitedWithCode(1),
"ERROR");
115 FLAGS_bar_string.set_value(
"bar");
116 const char *arg_empty_string[] = {
"",
"--bar_string="};
117 TestParser(2, arg_empty_string);
122 const char *argv[] = {
"",
"--foo_bool=true",
"--bar_bool=1"};
123 FLAGS_foo_bool.set_value(
false);
124 FLAGS_bar_bool.set_value(
false);
125 TestParser(
countof(argv), argv);
130 const char *inv_argv[] = {
"",
"--foo_bool=false",
"--bar_bool=0"};
131 FLAGS_foo_bool.set_value(
true);
132 FLAGS_bar_bool.set_value(
true);
133 TestParser(3, inv_argv);
138 const char *arg_implied_true[] = {
"",
"--bar_bool"};
139 FLAGS_bar_bool.set_value(
false);
140 TestParser(2, arg_implied_true);
143 const char *arg_missing_val[] = {
"",
"--bar_bool="};
144 EXPECT_EXIT(TestParser(2, arg_missing_val), ::testing::ExitedWithCode(1),
"ERROR");
149 const char *argv[] = {
"",
"-q",
"text"};
150 TestParser(
countof(argv), argv);
BOOL_PARAM_FLAG(foo_bool, false, "Bool flag for testing")
STRING_PARAM_FLAG(foo_string, "foo", "String flag for testing")
DOUBLE_PARAM_FLAG(foo_double, 0.1, "Double flag for testing")
INT_PARAM_FLAG(foo_int, 0, "Integer flag for testing")
#define EXPECT_EQ(val1, val2)
#define EXPECT_TRUE(condition)
#define EXPECT_STREQ(s1, s2)
#define EXPECT_FALSE(condition)
void ParseCommandLineFlags(const char *usage, int *argc, char ***argv, const bool remove_flags)
constexpr size_t countof(T const (&)[N]) noexcept
TEST_F(EuroText, FastLatinOCR)
void TestParser(int argc, const char **const_argv)
void TestParser(const char *usage, int argc, const char **const_argv)