diff --git a/include/cxxopts.hpp b/include/cxxopts.hpp index c449368..63d6336 100644 --- a/include/cxxopts.hpp +++ b/include/cxxopts.hpp @@ -466,9 +466,9 @@ namespace cxxopts std::basic_regex integer_pattern ("(-)?(0x)?([0-9a-zA-Z]+)|((0x)?0)"); std::basic_regex truthy_pattern - ("(t|T)(rue)?"); + ("(t|T)(rue)?|1"); std::basic_regex falsy_pattern - ("((f|F)(alse)?)?"); + ("(f|F)(alse)?|0"); } namespace detail diff --git a/test/options.cpp b/test/options.cpp index 0a1c9a3..7fb52b3 100644 --- a/test/options.cpp +++ b/test/options.cpp @@ -468,6 +468,8 @@ TEST_CASE("Booleans", "[boolean]") { ("bool", "A Boolean", cxxopts::value()) ("debug", "Debugging", cxxopts::value()) ("timing", "Timing", cxxopts::value()) + ("verbose", "Verbose", cxxopts::value()) + ("dry-run", "Dry Run", cxxopts::value()) ("noExplicitDefault", "No Explicit Default", cxxopts::value()) ("defaultTrue", "Timing", cxxopts::value()->default_value("true")) ("defaultFalse", "Timing", cxxopts::value()->default_value("false")) @@ -476,7 +478,7 @@ TEST_CASE("Booleans", "[boolean]") { options.parse_positional("others"); - Argv av({"booleans", "--bool=false", "--debug=true", "--timing", "extra"}); + Argv av({"booleans", "--bool=false", "--debug=true", "--timing", "--verbose=1", "--dry-run=0", "extra"}); char** argv = av.argv(); auto argc = av.argc(); @@ -486,6 +488,8 @@ TEST_CASE("Booleans", "[boolean]") { REQUIRE(result.count("bool") == 1); REQUIRE(result.count("debug") == 1); REQUIRE(result.count("timing") == 1); + REQUIRE(result.count("verbose") == 1); + REQUIRE(result.count("dry-run") == 1); REQUIRE(result.count("noExplicitDefault") == 0); REQUIRE(result.count("defaultTrue") == 0); REQUIRE(result.count("defaultFalse") == 0); @@ -493,6 +497,8 @@ TEST_CASE("Booleans", "[boolean]") { CHECK(result["bool"].as() == false); CHECK(result["debug"].as() == true); CHECK(result["timing"].as() == true); + CHECK(result["verbose"].as() == true); + CHECK(result["dry-run"].as() == false); CHECK(result["noExplicitDefault"].as() == false); CHECK(result["defaultTrue"].as() == true); CHECK(result["defaultFalse"].as() == false);