From c707bcc1c44040292cdab3b388cb9bb5118899d1 Mon Sep 17 00:00:00 2001 From: Pranav Srinivas Kumar Date: Thu, 21 Nov 2019 10:25:41 -0600 Subject: [PATCH] Closes #56 --- include/argparse.hpp | 2 +- test/test_optional_arguments.cpp | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/include/argparse.hpp b/include/argparse.hpp index b551865..771a54c 100644 --- a/include/argparse.hpp +++ b/include/argparse.hpp @@ -321,7 +321,7 @@ private: // If an argument starts with "-" or "--", then it's optional static bool is_optional(const std::string &aName) { - return (!aName.empty() && aName[0] == '-' && !is_integer(aName) && + return (aName.size() > 1 && aName[0] == '-' && !is_integer(aName) && !is_float(aName)); } diff --git a/test/test_optional_arguments.cpp b/test/test_optional_arguments.cpp index 2cb7395..8daf58a 100644 --- a/test/test_optional_arguments.cpp +++ b/test/test_optional_arguments.cpp @@ -12,6 +12,13 @@ DOCTEST_TEST_CASE("Parse toggle arguments with default value [optional_arguments REQUIRE(program["--verbose"] == false); } +DOCTEST_TEST_CASE("Argument '-' is not an optional argument [optional_arguments]") { + argparse::ArgumentParser program("test"); + program.add_argument("input"); + program.parse_args({ "./test.exe", "-"}); + REQUIRE(program.get("input") == "-"); +} + DOCTEST_TEST_CASE("Parse toggle arguments with implicit value [optional_arguments]") { argparse::ArgumentParser program("test"); program.add_argument("--verbose")