|
|
@@ -55,3 +55,57 @@ TEST(FlagTest, IntegerFlagCanBeRepeated) {
|
|
|
auto const options = parse<FlagTest>({"", "--verbose", "--verbose"});
|
|
|
EXPECT_THAT(options.verbosity, Eq(2));
|
|
|
}
|
|
|
+
|
|
|
+struct FlagWithDefaultTest : program::Arguments<FlagWithDefaultTest> {
|
|
|
+ using program::Arguments<FlagWithDefaultTest>::Arguments;
|
|
|
+
|
|
|
+ bool dry_run = flag("dry-run") = true;
|
|
|
+};
|
|
|
+
|
|
|
+TEST(FlagWithDefaultTest, ArgumentsAreDefaultedToValue) {
|
|
|
+ auto const options = parse<FlagWithDefaultTest>({""});
|
|
|
+ EXPECT_THAT(options.dry_run, Eq(true));
|
|
|
+}
|
|
|
+
|
|
|
+TEST(FlagWithDefaultTest, BooleanFlagCanBeInverted) {
|
|
|
+ auto const options = parse<FlagWithDefaultTest>({"", "--no-dry-run"});
|
|
|
+ EXPECT_THAT(options.dry_run, Eq(false));
|
|
|
+}
|
|
|
+
|
|
|
+struct FlagWithAbbrevTest : program::Arguments<FlagWithAbbrevTest> {
|
|
|
+ using program::Arguments<FlagWithAbbrevTest>::Arguments;
|
|
|
+
|
|
|
+ bool dry_run = flag("dry-run", 'k');
|
|
|
+ int verbosity = flag("verbose", 'v');
|
|
|
+};
|
|
|
+
|
|
|
+TEST(FlagWithAbbrevTest, BooleanFlagSetsState) {
|
|
|
+ auto const options = parse<FlagWithAbbrevTest>({"", "-k"});
|
|
|
+ EXPECT_THAT(options.dry_run, Eq(true));
|
|
|
+}
|
|
|
+
|
|
|
+TEST(FlagWithAbbrevTest, IntegerFlagIncrementsState) {
|
|
|
+ auto const options = parse<FlagWithAbbrevTest>({"", "-v"});
|
|
|
+ EXPECT_THAT(options.verbosity, Eq(1));
|
|
|
+}
|
|
|
+
|
|
|
+TEST(FlagWithAbbrevTest, CanComposeTogetherAbbreviatedFlags) {
|
|
|
+ auto const options = parse<FlagWithAbbrevTest>({"", "-vk"});
|
|
|
+ EXPECT_THAT(options.dry_run, Eq(true));
|
|
|
+ EXPECT_THAT(options.verbosity, Eq(1));
|
|
|
+}
|
|
|
+
|
|
|
+TEST(FlagWithAbbrevTest, CanComposeTogetherSameAbbrevFlags) {
|
|
|
+ auto const options = parse<FlagWithAbbrevTest>({"", "-vv"});
|
|
|
+ EXPECT_THAT(options.verbosity, Eq(2));
|
|
|
+}
|
|
|
+
|
|
|
+TEST(FlagWithAbbrevTest, CanNumberRepeatAbbrevFlags) {
|
|
|
+ auto const options = parse<FlagWithAbbrevTest>({"", "-v3"});
|
|
|
+ EXPECT_THAT(options.verbosity, Eq(3));
|
|
|
+}
|
|
|
+
|
|
|
+TEST(FlagWithAbbrevTest, CannotNumberRepeatAndConcatAbbrevFlags) {
|
|
|
+ EXPECT_THROW(parse<FlagWithAbbrevTest>({"", "-v3k"}),
|
|
|
+ program::NotAnArgumentError);
|
|
|
+}
|