diff --git a/test/main.cpp b/test/main.cpp index 2885d40..8d9aa37 100644 --- a/test/main.cpp +++ b/test/main.cpp @@ -10,3 +10,4 @@ #include #include #include +#include \ No newline at end of file diff --git a/test/test_required_arguments.hpp b/test/test_required_arguments.hpp new file mode 100644 index 0000000..f9ac26e --- /dev/null +++ b/test/test_required_arguments.hpp @@ -0,0 +1,45 @@ +#pragma once +#include +#include + +TEST_CASE("Parse required arguments which are not set and don't have default value.", "[required_arguments]") { + argparse::ArgumentParser program("test"); + program.add_argument("--output", "-o").required(); + REQUIRE_THROWS(program.parse_args({ "./main" })); +} + +TEST_CASE("Parse required arguments which are set as empty value and don't have default value.", "[required_arguments]") { + argparse::ArgumentParser program("test"); + program.add_argument("--output", "-o").required(); + REQUIRE_THROWS(program.parse_args({ "./main", "-o" })); +} + +TEST_CASE("Parse required arguments which are set as some value and don't have default value.", "[required_arguments]") { + argparse::ArgumentParser program("test"); + program.add_argument("--output", "-o").required(); + program.parse_args({ "./main", "-o", "filename" }); + REQUIRE(program.get("--output") == "filename"); + REQUIRE(program.get("-o") == "filename"); +} + +TEST_CASE("Parse required arguments which are not set and have default value.", "[required_arguments]") { + argparse::ArgumentParser program("test"); + program.add_argument("--output", "-o").required().default_value(std::string("filename")); + program.parse_args({ "./main" }); + REQUIRE(program.get("--output") == "filename"); + REQUIRE(program.get("-o") == "filename"); +} + +TEST_CASE("Parse required arguments which are set as empty and have default value.", "[required_arguments]") { + argparse::ArgumentParser program("test"); + program.add_argument("--output", "-o").required().default_value(std::string("filename")); + REQUIRE_THROWS(program.parse_args({ "./main", "-o" })); +} + +TEST_CASE("Parse required arguments which are set as some value and have default value.", "[required_arguments]") { + argparse::ArgumentParser program("test"); + program.add_argument("--output", "-o").required().default_value(std::string("filename")); + program.parse_args({ "./main", "-o", "anotherfile" }); + REQUIRE(program.get("--output") == "anotherfile"); + REQUIRE(program.get("-o") == "anotherfile"); +} \ No newline at end of file