|
|
@@ -9,7 +9,9 @@
|
|
|
|
|
|
#include "xcode_gtest_helper.h"
|
|
|
|
|
|
+using testing::ElementsAre;
|
|
|
using testing::Eq;
|
|
|
+using testing::IsEmpty;
|
|
|
|
|
|
template <typename T, size_t N> static T parse(char const * const (&argv)[N]) {
|
|
|
return T(N, argv);
|
|
|
@@ -122,3 +124,43 @@ TEST(LongOptionWithAbbrevTest, CanPutAbbrevArgAndValueInSameToken) {
|
|
|
auto const options = parse<LongOptionWithAbbrevTest>({"", "-p443"});
|
|
|
EXPECT_THAT(options.port, Eq(443));
|
|
|
}
|
|
|
+
|
|
|
+struct LongOptionRepeatTest : program::Arguments<LongOptionRepeatTest> {
|
|
|
+ using program::Arguments<LongOptionRepeatTest>::Arguments;
|
|
|
+
|
|
|
+ std::vector<int> port = option("port");
|
|
|
+};
|
|
|
+
|
|
|
+TEST(LongOptionRepeatTest, DefaultIsEmpty) {
|
|
|
+ auto const options = parse<LongOptionRepeatTest>({""});
|
|
|
+ EXPECT_THAT(options.port, IsEmpty());
|
|
|
+}
|
|
|
+
|
|
|
+TEST(LongOptionRepeatTest, CanProvideArgument) {
|
|
|
+ auto const options = parse<LongOptionRepeatTest>({"", "--port", "443"});
|
|
|
+ EXPECT_THAT(options.port, ElementsAre(443));
|
|
|
+}
|
|
|
+
|
|
|
+TEST(LongOptionRepeatTest, RepeatingArgumentsAppends) {
|
|
|
+ auto const options =
|
|
|
+ parse<LongOptionRepeatTest>({"", "--port", "443", "--port", "8080"});
|
|
|
+ EXPECT_THAT(options.port, ElementsAre(443, 8080));
|
|
|
+}
|
|
|
+
|
|
|
+struct LongOptionRepeatWithDefaultTest
|
|
|
+ : program::Arguments<LongOptionRepeatWithDefaultTest> {
|
|
|
+ using program::Arguments<LongOptionRepeatWithDefaultTest>::Arguments;
|
|
|
+
|
|
|
+ std::vector<int> port = option("port") = std::vector{8080};
|
|
|
+};
|
|
|
+
|
|
|
+TEST(LongOptionRepeatWithDefaultTest, DefaultIsProvided) {
|
|
|
+ auto const options = parse<LongOptionRepeatWithDefaultTest>({""});
|
|
|
+ EXPECT_THAT(options.port, ElementsAre(8080));
|
|
|
+}
|
|
|
+
|
|
|
+TEST(LongOptionRepeatWithDefaultTest, ArgumentOverwritesDefault) {
|
|
|
+ auto const options =
|
|
|
+ parse<LongOptionRepeatWithDefaultTest>({"", "--port", "443"});
|
|
|
+ EXPECT_THAT(options.port, ElementsAre(443));
|
|
|
+}
|