#include #include TEST_CASE("Check if type conversions work correctly") { using Required = Garbage::SimpleConf::Required; std::filesystem::path path("TestConfigs/BasicConversions.conf"); Garbage::SimpleConf config(path); SECTION("Basic stuff that should be correct") { REQUIRE(config.Get("an int") == "123456"); REQUIRE(config.Get("a float") == "3.5"); REQUIRE(config.Get("a long (8B)") == "121212121212121212"); REQUIRE(config.Get("a double") == "0.0000128"); REQUIRE(config.Get("an int") == 123456); REQUIRE(config.Get("a float") == 3.5f); REQUIRE(config.Get("a long (8B)") == 121212121212121212); REQUIRE(config.Get("a double") == 0.0000128); } SECTION("Stuff that should fail to parse") { REQUIRE(config.Get("an incorrect char") == "256"); REQUIRE(config.Get("unsigned") == "-34"); REQUIRE(config.Get("signed, but large") == "3000000000"); REQUIRE(config.Get("mangled float") == "3.f4"); REQUIRE(config.Get("mangled float 2") == "2.4f"); using ConversionError = Garbage::SimpleConfImplementation::ConversionError; REQUIRE_THROWS_AS(config.Get("an incorrect char"), ConversionError); REQUIRE_THROWS_AS(config.Get("unsigned"), ConversionError); REQUIRE_THROWS_AS(config.Get("signed, but large"), ConversionError); REQUIRE_THROWS_AS(config.Get("mangled float"), ConversionError); REQUIRE_THROWS_AS(config.Get("mangled float 2"), ConversionError); } }