diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 53efc08d1..c432fa0d1 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -35,6 +35,7 @@ set(CLI11_TESTS OptionalTest DeprecatedTest StringParseTest + TrueFalseTest ) if(WIN32) diff --git a/tests/TrueFalseTest.cpp b/tests/TrueFalseTest.cpp new file mode 100644 index 000000000..b12c70c66 --- /dev/null +++ b/tests/TrueFalseTest.cpp @@ -0,0 +1,34 @@ +#include "app_helper.hpp" + +/// This allows a set of strings to be run over by a test +struct TApp_TBO : public TApp, public ::testing::WithParamInterface {}; + +TEST_P(TApp_TBO, TrueBoolOption) { + bool value = false; // Not used, but set just in case + app.add_option("-b,--bool", value); + args = {"--bool", GetParam()}; + run(); + EXPECT_EQ(1u, app.count("--bool")); + EXPECT_TRUE(value); +} + +// Change to INSTANTIATE_TEST_SUITE_P in GTest master +INSTANTIATE_TEST_CASE_P(TrueBoolOptions, + TApp_TBO, + ::testing::Values("true", "on", "True", "ON"),); + +/// This allows a set of strings to be run over by a test +struct TApp_FBO : public TApp, public ::testing::WithParamInterface {}; + +TEST_P(TApp_FBO, FalseBoolOptions) { + bool value = true; // Not used, but set just in case + app.add_option("-b,--bool", value); + args = {"--bool", GetParam()}; + run(); + EXPECT_EQ(1u, app.count("--bool")); + EXPECT_FALSE(value); +} + +INSTANTIATE_TEST_CASE_P(FalseBoolOptions, + TApp_FBO, + ::testing::Values("false", "off", "False", "OFF"),);