瀏覽代碼

Adding more tests.

Sam Jaffe 4 年之前
父節點
當前提交
d8af8f0c92
共有 2 個文件被更改,包括 60 次插入0 次删除
  1. 54 0
      test/flag_test.cpp
  2. 6 0
      test/options_test.cpp

+ 54 - 0
test/flag_test.cpp

@@ -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);
+}

+ 6 - 0
test/options_test.cpp

@@ -116,3 +116,9 @@ TEST(LongOptionWithAbbrevTest, ShortAndLongArgsGoToSamePool) {
       parse<LongOptionWithAbbrevTest>({"", "--port", "8080", "-p", "443"}),
       program::ArgumentStructureError);
 }
+
+TEST(LongOptionWithAbbrevTest, CanPutAbbrevArgAndValueInSameToken) {
+  EXPECT_NO_THROW(parse<LongOptionWithAbbrevTest>({"", "-p443"}));
+  auto const options = parse<LongOptionWithAbbrevTest>({"", "-p443"});
+  EXPECT_THAT(options.port, Eq(443));
+}