| 36 | } // namespace |
| 37 | |
| 38 | TEST(CommandLineFlagsTest, BasicUsage) { |
| 39 | int some_int32_set_directly = 10; |
| 40 | int some_int32_set_via_hook = 20; |
| 41 | int64 some_int64_set_directly = 21474836470; // max int32 is 2147483647 |
| 42 | int64 some_int64_set_via_hook = 21474836479; // max int32 is 2147483647 |
| 43 | bool some_switch_set_directly = false; |
| 44 | bool some_switch_set_via_hook = true; |
| 45 | string some_name_set_directly = "something_a"; |
| 46 | string some_name_set_via_hook = "something_b"; |
| 47 | float some_float_set_directly = -23.23f; |
| 48 | float some_float_set_via_hook = -25.23f; |
| 49 | std::vector<string> argv_strings = {"program_name", |
| 50 | "--some_int32_set_directly=20", |
| 51 | "--some_int32_set_via_hook=50", |
| 52 | "--some_int64_set_directly=214748364700", |
| 53 | "--some_int64_set_via_hook=214748364710", |
| 54 | "--some_switch_set_directly", |
| 55 | "--some_switch_set_via_hook=false", |
| 56 | "--some_name_set_directly=somethingelse", |
| 57 | "--some_name_set_via_hook=anythingelse", |
| 58 | "--some_float_set_directly=42.0", |
| 59 | "--some_float_set_via_hook=43.0"}; |
| 60 | int argc = argv_strings.size(); |
| 61 | std::vector<char *> argv_array = CharPointerVectorFromStrings(argv_strings); |
| 62 | bool parsed_ok = Flags::Parse( |
| 63 | &argc, argv_array.data(), |
| 64 | { |
| 65 | Flag("some_int32_set_directly", &some_int32_set_directly, |
| 66 | "some int32 set directly"), |
| 67 | Flag("some_int32_set_via_hook", |
| 68 | [&](int32 value) { |
| 69 | some_int32_set_via_hook = value; |
| 70 | return true; |
| 71 | }, |
| 72 | some_int32_set_via_hook, "some int32 set via hook"), |
| 73 | Flag("some_int64_set_directly", &some_int64_set_directly, |
| 74 | "some int64 set directly"), |
| 75 | Flag("some_int64_set_via_hook", |
| 76 | [&](int64 value) { |
| 77 | some_int64_set_via_hook = value; |
| 78 | return true; |
| 79 | }, |
| 80 | some_int64_set_via_hook, "some int64 set via hook"), |
| 81 | Flag("some_switch_set_directly", &some_switch_set_directly, |
| 82 | "some switch set directly"), |
| 83 | Flag("some_switch_set_via_hook", |
| 84 | [&](bool value) { |
| 85 | some_switch_set_via_hook = value; |
| 86 | return true; |
| 87 | }, |
| 88 | some_switch_set_via_hook, "some switch set via hook"), |
| 89 | Flag("some_name_set_directly", &some_name_set_directly, |
| 90 | "some name set directly"), |
| 91 | Flag("some_name_set_via_hook", |
| 92 | [&](string value) { |
| 93 | some_name_set_via_hook = std::move(value); |
| 94 | return true; |
| 95 | }, |
nothing calls this directly
no test coverage detected