| 107 | |
| 108 | |
| 109 | TEST(SubcommandTest, Flags) |
| 110 | { |
| 111 | TestSubcommand::Flags flags; |
| 112 | flags.populate(); |
| 113 | |
| 114 | // Construct the command line arguments. |
| 115 | vector<string> _argv = getArgv(flags); |
| 116 | int argc = static_cast<int>(_argv.size()) + 2; |
| 117 | char** argv = new char*[argc]; |
| 118 | argv[0] = (char*) "command"; |
| 119 | argv[1] = (char*) "subcommand"; |
| 120 | for (int i = 2; i < argc; i++) { |
| 121 | argv[i] = ::strdup(_argv[i - 2].c_str()); |
| 122 | } |
| 123 | |
| 124 | TestSubcommand subcommand("subcommand"); |
| 125 | |
| 126 | ASSERT_EQ(0, Subcommand::dispatch( |
| 127 | None(), |
| 128 | argc, |
| 129 | argv, |
| 130 | &subcommand)); |
| 131 | |
| 132 | EXPECT_EQ(flags.b, subcommand.flags.b); |
| 133 | EXPECT_EQ(flags.i, subcommand.flags.i); |
| 134 | EXPECT_EQ(flags.s, subcommand.flags.s); |
| 135 | EXPECT_EQ(flags.s2, subcommand.flags.s2); |
| 136 | EXPECT_EQ(flags.s3, subcommand.flags.s3); |
| 137 | EXPECT_EQ(flags.d, subcommand.flags.d); |
| 138 | EXPECT_EQ(flags.y, subcommand.flags.y); |
| 139 | EXPECT_EQ(flags.j, subcommand.flags.j); |
| 140 | |
| 141 | for (int i = 2; i < argc; i++) { |
| 142 | ::free(argv[i]); |
| 143 | } |
| 144 | delete[] argv; |
| 145 | } |
| 146 | |
| 147 | |
| 148 | TEST(SubcommandTest, Dispatch) |