diff options
Diffstat (limited to 'nihil.config/tests')
| -rw-r--r-- | nihil.config/tests/CMakeLists.txt | 15 | ||||
| -rw-r--r-- | nihil.config/tests/string.cc | 34 |
2 files changed, 49 insertions, 0 deletions
diff --git a/nihil.config/tests/CMakeLists.txt b/nihil.config/tests/CMakeLists.txt new file mode 100644 index 0000000..1805f7f --- /dev/null +++ b/nihil.config/tests/CMakeLists.txt @@ -0,0 +1,15 @@ +# This source code is released into the public domain. + +add_executable(nihil.config.test + string.cc +) + +target_link_libraries(nihil.config.test PRIVATE + nihil.config + Catch2::Catch2WithMain) + +find_package(Catch2 REQUIRED) + +include(CTest) +include(Catch) +catch_discover_tests(nihil.config.test) diff --git a/nihil.config/tests/string.cc b/nihil.config/tests/string.cc new file mode 100644 index 0000000..7e95190 --- /dev/null +++ b/nihil.config/tests/string.cc @@ -0,0 +1,34 @@ +/* + * This source code is released into the public domain. + */ + +#include <string> + +#include <catch2/catch_test_macros.hpp> + +import nihil.config; + +TEST_CASE("nihil.config: string option", "[nihil][nihil.config]") +{ + std::string storage; + + REQUIRE_THROWS_AS(nihil::config::get_option("test_option"), + nihil::config::unknown_option); + + { + auto string_option = nihil::config::string( + storage, "test_option", "This is a test option"); + + auto &opt = nihil::config::get_option("test_option"); + REQUIRE(opt.name() == "test_option"); + REQUIRE(opt.description() == "This is a test option"); + REQUIRE(opt.is_default() == true); + REQUIRE(opt.string() == ""); + + opt.string("testing"); + REQUIRE(storage == "testing"); + } + + REQUIRE_THROWS_AS(nihil::config::get_option("test_option"), + nihil::config::unknown_option); +} |
