aboutsummaryrefslogtreecommitdiffstats
path: root/nihil.config/string.test.cc
blob: 322eb79dacae33ec4c9497ee21c7d8891bc5a86b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// This source code is released into the public domain.

#include <catch2/catch_test_macros.hpp>

import nihil.std;
import nihil.config;

namespace {
TEST_CASE("nihil.config: string option", "[nihil][nihil.config]")
{
	auto storage = std::string();

	REQUIRE(nihil::config::get_option("test_option").has_value() == false);

	{
		auto string_option = nihil::config::string(
			storage, "test_option", "This is a test option");

		auto *opt = nihil::config::get_option("test_option").value();

		REQUIRE(opt->name() == "test_option");
		REQUIRE(opt->description() == "This is a test option");
		REQUIRE(opt->is_default() == true);
		REQUIRE(opt->string() == "");

		REQUIRE(opt->string("testing"));
		REQUIRE(storage == "testing");
	}

	REQUIRE(nihil::config::get_option("test_option").has_value() == false);
}
} // anonymous namespace