| 23 | namespace { |
| 24 | |
| 25 | TEST(CommandLineFlagsTest, BasicUsage) { |
| 26 | int some_int32 = 10; |
| 27 | int64_t some_int64 = 21474836470; // max int32 is 2147483647 |
| 28 | bool some_switch = false; |
| 29 | std::string some_name = "something_a"; |
| 30 | float some_float = -23.23f; |
| 31 | bool some_bool = false; |
| 32 | bool some_numeric_bool = true; |
| 33 | const char* argv_strings[] = {"program_name", |
| 34 | "--some_int32=20", |
| 35 | "--some_int64=214748364700", |
| 36 | "--some_switch=true", |
| 37 | "--some_name=somethingelse", |
| 38 | "--some_float=42.0", |
| 39 | "--some_bool=true", |
| 40 | "--some_numeric_bool=0"}; |
| 41 | int argc = 8; |
| 42 | bool parsed_ok = Flags::Parse( |
| 43 | &argc, reinterpret_cast<const char**>(argv_strings), |
| 44 | { |
| 45 | Flag::CreateFlag("some_int32", &some_int32, "some int32"), |
| 46 | Flag::CreateFlag("some_int64", &some_int64, "some int64"), |
| 47 | Flag::CreateFlag("some_switch", &some_switch, "some switch"), |
| 48 | Flag::CreateFlag("some_name", &some_name, "some name"), |
| 49 | Flag::CreateFlag("some_float", &some_float, "some float"), |
| 50 | Flag::CreateFlag("some_bool", &some_bool, "some bool"), |
| 51 | Flag::CreateFlag("some_numeric_bool", &some_numeric_bool, |
| 52 | "some numeric bool"), |
| 53 | }); |
| 54 | |
| 55 | EXPECT_EQ(true, parsed_ok); |
| 56 | EXPECT_EQ(20, some_int32); |
| 57 | EXPECT_EQ(214748364700, some_int64); |
| 58 | EXPECT_EQ(true, some_switch); |
| 59 | EXPECT_EQ("somethingelse", some_name); |
| 60 | EXPECT_NEAR(42.0f, some_float, 1e-5f); |
| 61 | EXPECT_TRUE(some_bool); |
| 62 | EXPECT_FALSE(some_numeric_bool); |
| 63 | EXPECT_EQ(argc, 1); |
| 64 | } |
| 65 | |
| 66 | TEST(CommandLineFlagsTest, EmptyStringFlag) { |
| 67 | int argc = 2; |
nothing calls this directly
no test coverage detected