1
0
mirror of https://github.com/CLIUtils/CLI11.git synced 2025-04-30 12:43:52 +00:00

Adding tests for App, may have found an issue with expected(-1)

This commit is contained in:
Henry Fredrick Schreiner 2017-03-09 09:11:11 -05:00
parent 09afb2436f
commit f93cb653c7

View File

@ -39,7 +39,6 @@ TEST_F(TApp, DashedOptions) {
} }
TEST_F(TApp, OneFlagRef) { TEST_F(TApp, OneFlagRef) {
int ref; int ref;
app.add_flag("-c,--count", ref); app.add_flag("-c,--count", ref);
@ -111,6 +110,22 @@ TEST_F(TApp, DefaultStringAgain) {
EXPECT_EQ(str, "previous"); EXPECT_EQ(str, "previous");
} }
TEST_F(TApp, DualOptions) {
std::string str = "previous";
std::vector<std::string> vstr = {"previous"};
std::vector<std::string> ans = {"one", "two"};
app.add_option("-s,--string", str);
app.add_option("-v,--vector", vstr);
args = {"--vector=one", "--vector=two"};
run();
EXPECT_EQ(ans, vstr);
args = {"--string=one", "--string=two"};
EXPECT_THROW(run(), CLI::ConversionError);
}
TEST_F(TApp, LotsOfFlags) { TEST_F(TApp, LotsOfFlags) {
app.add_flag("-a"); app.add_flag("-a");
@ -229,6 +244,30 @@ TEST_F(TApp, Positionals) {
EXPECT_EQ("thing2", posit2); EXPECT_EQ("thing2", posit2);
} }
TEST_F(TApp, ForcedPositional) {
std::vector<std::string> posit;
auto one = app.add_flag("--one");
auto pos = app.add_option("posit", posit)->expected(2); // Expected -1 broken?
args = {"--one", "two", "three"};
run();
std::vector<std::string> answers1 = {"two", "three"};
EXPECT_TRUE(one->count());
EXPECT_EQ(answers1, posit);
app.reset();
args = {"--", "--one", "two", "three"};
std::vector<std::string> answers2 = {"--one", "two", "three"};
pos->expected(3);
run();
EXPECT_FALSE(one->count());
EXPECT_EQ(answers2, posit);
}
TEST_F(TApp, MixedPositionals) { TEST_F(TApp, MixedPositionals) {
int positional_int; int positional_int;
@ -274,6 +313,18 @@ TEST_F(TApp, Reset) {
} }
TEST_F(TApp, RemoveOption) {
app.add_flag("--one");
auto opt = app.add_flag("--two");
EXPECT_TRUE(app.remove_option(opt));
EXPECT_FALSE(app.remove_option(opt));
args = {"--two"};
EXPECT_THROW(run(), CLI::ExtrasError);
}
TEST_F(TApp, FileNotExists) { TEST_F(TApp, FileNotExists) {
std::string myfile{"TestNonFileNotUsed.txt"}; std::string myfile{"TestNonFileNotUsed.txt"};
EXPECT_TRUE(CLI::NonexistentPath(myfile)); EXPECT_TRUE(CLI::NonexistentPath(myfile));
@ -349,6 +400,21 @@ TEST_F(TApp, InIntSet) {
EXPECT_THROW(run(), CLI::ConversionError); EXPECT_THROW(run(), CLI::ConversionError);
} }
TEST_F(TApp, FailSet) {
int choice;
app.add_set("-q,--quick", choice, {1, 2, 3});
args = {"--quick", "3", "--quick=2"};
EXPECT_THROW(run(), CLI::ConversionError);
app.reset();
args = {"--quick=hello"};
EXPECT_THROW(run(), CLI::ConversionError);
}
TEST_F(TApp, InSetIgnoreCase) { TEST_F(TApp, InSetIgnoreCase) {
std::string choice; std::string choice;
@ -372,6 +438,11 @@ TEST_F(TApp, InSetIgnoreCase) {
app.reset(); app.reset();
args = {"--quick", "four"}; args = {"--quick", "four"};
EXPECT_THROW(run(), CLI::ConversionError); EXPECT_THROW(run(), CLI::ConversionError);
app.reset();
args = {"--quick=one", "--quick=two"};
EXPECT_THROW(run(), CLI::ConversionError);
} }
TEST_F(TApp, VectorFixedString) { TEST_F(TApp, VectorFixedString) {