Commit a86f7fbd5e4354e08a2a843444f9b780fe4d0dfa

Authored by Philip Top
Committed by GitHub
1 parent f0461525

tests: add some extra tests from debugging (#542)

* add a test to verify std::optional<std::uint64_t> works correctly.

* adding some extra tests to help with debugging
tests/AppTest.cpp
@@ -564,6 +564,26 @@ TEST_F(TApp, LotsOfFlagsSingleStringExtraSpace) { @@ -564,6 +564,26 @@ TEST_F(TApp, LotsOfFlagsSingleStringExtraSpace) {
564 EXPECT_EQ(1u, app.count("-A")); 564 EXPECT_EQ(1u, app.count("-A"));
565 } 565 }
566 566
  567 +TEST_F(TApp, SingleArgVector) {
  568 +
  569 + std::vector<std::string> channels;
  570 + std::vector<std::string> iargs;
  571 + std::string path;
  572 + app.add_option("-c", channels)->type_size(1)->allow_extra_args(false);
  573 + app.add_option("args", iargs);
  574 + app.add_option("-p", path);
  575 +
  576 + app.parse("-c t1 -c t2 -c t3 a1 a2 a3 a4 -p happy");
  577 + EXPECT_EQ(3u, channels.size());
  578 + EXPECT_EQ(4u, iargs.size());
  579 + EXPECT_EQ(path, "happy");
  580 +
  581 + app.parse("-c t1 a1 -c t2 -c t3 a2 a3 a4 -p happy");
  582 + EXPECT_EQ(3u, channels.size());
  583 + EXPECT_EQ(4u, iargs.size());
  584 + EXPECT_EQ(path, "happy");
  585 +}
  586 +
567 TEST_F(TApp, FlagLikeOption) { 587 TEST_F(TApp, FlagLikeOption) {
568 bool val{false}; 588 bool val{false};
569 auto opt = app.add_option("--flag", val)->type_size(0)->default_str("true"); 589 auto opt = app.add_option("--flag", val)->type_size(0)->default_str("true");
tests/OptionalTest.cpp
@@ -117,6 +117,19 @@ TEST_F(TApp, StdOptionalComplexDirect) { @@ -117,6 +117,19 @@ TEST_F(TApp, StdOptionalComplexDirect) {
117 EXPECT_EQ(*opt, val2); 117 EXPECT_EQ(*opt, val2);
118 } 118 }
119 119
  120 +TEST_F(TApp, StdOptionalUint) {
  121 + std::optional<std::uint64_t> opt;
  122 + app.add_option("-i,--int", opt);
  123 + run();
  124 + EXPECT_FALSE(opt);
  125 +
  126 + args = {"-i", "15"};
  127 + run();
  128 + EXPECT_EQ(*opt, 15U);
  129 + static_assert(CLI::detail::classify_object<std::optional<std::uint64_t>>::value ==
  130 + CLI::detail::object_category::wrapper_value);
  131 +}
  132 +
120 #ifdef _MSC_VER 133 #ifdef _MSC_VER
121 #pragma warning(default : 4244) 134 #pragma warning(default : 4244)
122 #endif 135 #endif