mirror of
https://github.com/KeqingMoe/argparse.git
synced 2025-07-03 22:54:39 +00:00
If the developer forgot to call ArgumentParser::parse_args<>, attempts to use ::get, ::present, etc., would raise "No value provided...". With this change, the error better describes what went wrong. Signed-off-by: Sean Robinson <sean.robinson@scottsdalecc.edu>
38 lines
1.4 KiB
C++
38 lines
1.4 KiB
C++
#include <doctest.hpp>
|
|
#include <argparse/argparse.hpp>
|
|
|
|
using doctest::test_suite;
|
|
|
|
TEST_CASE("Getting a simple argument" * test_suite("ArgumentParser::get")) {
|
|
argparse::ArgumentParser program("test");
|
|
program.add_argument("-s", "--stuff");
|
|
REQUIRE_NOTHROW(program.parse_args({ "test", "-s", "./src" }));
|
|
REQUIRE(program.get("--stuff") == "./src");
|
|
}
|
|
|
|
TEST_CASE("Skipped call to parse_args" * test_suite("ArgumentParser::get")) {
|
|
argparse::ArgumentParser program("test");
|
|
program.add_argument("stuff");
|
|
REQUIRE_THROWS_WITH_AS(program.get("stuff"),
|
|
"Nothing parsed, no arguments are available.",
|
|
std::logic_error);
|
|
}
|
|
|
|
TEST_CASE("Missing argument" * test_suite("ArgumentParser::get")) {
|
|
argparse::ArgumentParser program("test");
|
|
program.add_argument("-s", "--stuff");
|
|
REQUIRE_NOTHROW(program.parse_args({ "test" }));
|
|
REQUIRE_THROWS_WITH_AS(program.get("--stuff"),
|
|
"No value provided for '--stuff'.",
|
|
std::logic_error);
|
|
}
|
|
|
|
TEST_CASE("Implicit argument" * test_suite("ArgumentParser::get")) {
|
|
argparse::ArgumentParser program("test");
|
|
program.add_argument("-s", "--stuff").nargs(1);
|
|
REQUIRE_NOTHROW(program.parse_args({ "test" }));
|
|
REQUIRE_THROWS_WITH_AS(program.get("--stuff"),
|
|
"No value provided for '--stuff'.",
|
|
std::logic_error);
|
|
}
|