#include "configuration.h" #include TEST(Configuration, ctor_empty_initializer_list) { Configuration conf({}); std::cout << conf; } TEST(Configuration, ctor_initializer_list) { Configuration conf({ { "some_string", "value1" }, { "some_bool", true }, { "some_int", 42 }, }); // operator<< should not throw exceptions std::cout << conf; EXPECT_EQ(*conf.value("some_string"), "value1"); EXPECT_EQ(*conf.value("some_bool"), true); EXPECT_EQ(*conf.value("some_int"), 42); EXPECT_FALSE(conf.value("no_int")); } TEST(Configuration, read_file) { // because the init_list is empty, all types are strings Configuration conf({}); EXPECT_TRUE(conf.read_file("defaultrc.ini")); std::cout << "---------\n"; std::cout << conf; std::cout << "---------\n"; // defaultrc.ini contents EXPECT_EQ(*conf.value("name"), "Top level"); EXPECT_FALSE(conf.value("comment")); EXPECT_EQ(*conf.value("main/name"), "Section Testing"); // casting a string to an integer EXPECT_EQ(*conf.value("number"), 12); // casting a string to a boolean EXPECT_EQ(*conf.value("toggle"), "true"); EXPECT_EQ(*conf.value("toggle"), true); EXPECT_EQ(*conf.value("main/toggle"), false); // extrarc.ini contents EXPECT_EQ(*conf.value("over"), "extra"); EXPECT_EQ(*conf.value("extra/name"), "extra section"); }