diff --git a/tests/AppTest.cpp b/tests/AppTest.cpp index 0716c542..89f52c08 100644 --- a/tests/AppTest.cpp +++ b/tests/AppTest.cpp @@ -564,6 +564,26 @@ TEST_F(TApp, LotsOfFlagsSingleStringExtraSpace) { EXPECT_EQ(1u, app.count("-A")); } +TEST_F(TApp, SingleArgVector) { + + std::vector channels; + std::vector iargs; + std::string path; + app.add_option("-c", channels)->type_size(1)->allow_extra_args(false); + app.add_option("args", iargs); + app.add_option("-p", path); + + app.parse("-c t1 -c t2 -c t3 a1 a2 a3 a4 -p happy"); + EXPECT_EQ(3u, channels.size()); + EXPECT_EQ(4u, iargs.size()); + EXPECT_EQ(path, "happy"); + + app.parse("-c t1 a1 -c t2 -c t3 a2 a3 a4 -p happy"); + EXPECT_EQ(3u, channels.size()); + EXPECT_EQ(4u, iargs.size()); + EXPECT_EQ(path, "happy"); +} + TEST_F(TApp, FlagLikeOption) { bool val{false}; auto opt = app.add_option("--flag", val)->type_size(0)->default_str("true"); diff --git a/tests/OptionalTest.cpp b/tests/OptionalTest.cpp index 527751a6..51f159aa 100644 --- a/tests/OptionalTest.cpp +++ b/tests/OptionalTest.cpp @@ -117,6 +117,19 @@ TEST_F(TApp, StdOptionalComplexDirect) { EXPECT_EQ(*opt, val2); } +TEST_F(TApp, StdOptionalUint) { + std::optional opt; + app.add_option("-i,--int", opt); + run(); + EXPECT_FALSE(opt); + + args = {"-i", "15"}; + run(); + EXPECT_EQ(*opt, 15U); + static_assert(CLI::detail::classify_object>::value == + CLI::detail::object_category::wrapper_value); +} + #ifdef _MSC_VER #pragma warning(default : 4244) #endif