argument_test.cpp 944 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. //
  2. // argument_test.cpp
  3. // program_args-test
  4. //
  5. // Created by Sam Jaffe on 2/7/21.
  6. //
  7. #include "program_args/arguments.h"
  8. #include "xcode_gtest_helper.h"
  9. using testing::ElementsAre;
  10. using testing::Eq;
  11. template <typename T, size_t N> static T parse(char const * const (&argv)[N]) {
  12. return T(N, argv);
  13. }
  14. struct ArgumentTest : program::Arguments<ArgumentTest> {
  15. using program::Arguments<ArgumentTest>::Arguments;
  16. std::string arg0 = argument(0, "arg0");
  17. };
  18. TEST(ArgumentTest, ThrowsIfMissingArg) {
  19. EXPECT_THROW(parse<ArgumentTest>({""}), program::IllegalPositionError);
  20. }
  21. TEST(ArgumentTest, ProcessesArgument) {
  22. auto const options = parse<ArgumentTest>({"", "value"});
  23. EXPECT_THAT(options.arg0, Eq("value"));
  24. }
  25. TEST(ArgumentTest, HasNoIssueWithOverflowArg) {
  26. auto const options = parse<ArgumentTest>({"", "value", "extra"});
  27. EXPECT_THAT(options.arg0, Eq("value"));
  28. EXPECT_THAT(options.args(), ElementsAre("extra"));
  29. }