// // argument_test.cpp // program_args-test // // Created by Sam Jaffe on 2/7/21. // #include "program_args/arguments.h" #include "xcode_gtest_helper.h" using testing::ElementsAre; using testing::Eq; template static T parse(char const * const (&argv)[N]) { return T(N, argv); } struct ArgumentTest : program::Arguments { using program::Arguments::Arguments; std::string arg0 = argument(0, "arg0"); }; TEST(ArgumentTest, ThrowsIfMissingArg) { EXPECT_THROW(parse({""}), program::IllegalPositionError); } TEST(ArgumentTest, ProcessesArgument) { auto const options = parse({"", "value"}); EXPECT_THAT(options.arg0, Eq("value")); } TEST(ArgumentTest, HasNoIssueWithOverflowArg) { auto const options = parse({"", "value", "extra"}); EXPECT_THAT(options.arg0, Eq("value")); EXPECT_THAT(options.args(), ElementsAre("extra")); }