diff options
Diffstat (limited to 'test/conf/main.cpp')
-rw-r--r-- | test/conf/main.cpp | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/test/conf/main.cpp b/test/conf/main.cpp new file mode 100644 index 0000000..e499a4d --- /dev/null +++ b/test/conf/main.cpp @@ -0,0 +1,54 @@ +#include <fstream> +#include <iostream> +#include <string> +#include "configuration.h" +#include <cassert> + +int main(int, char**) +{ + std::fstream fs; + fs.open("smolbote.cfg", std::fstream::in); + assert(fs.is_open()); + + { + auto value_map = std::make_unique<Configuration, std::initializer_list<std::pair<std::string, conf_value_t>>>({ + { "test", std::string("unknown") }, + { "integer-1", 20 }, + { "integer-2", 30 } + }); + value_map->read(fs); + + Configuration::move_global(std::move(value_map)); + fs.close(); + } + + { + Configuration g; + assert(g.value<std::string>("test") == "value"); + assert(g.value<std::string>("plugins.path") == "/usr/local/lib/smolbote/plugins"); + assert(g.value<int>("integer-1") == 20); + assert(g.value<int>("integer-2") == 22); + } + +/* + { + const Configuration conf(std::move(value_map)); + + assert(conf.value<std::string>("test") == "value"); + assert(conf.value<std::string>("plugins.path") == "/usr/local/lib/smolbote/plugins"); + assert(conf.value<int>("integer-1") == 20); + assert(conf.value<int>("integer-2") == 22); + } +*/ + // Configuration is now destroyed + + + // This should be a compiler warning + //const Configuration c(std::move(value_map)); + //assert(c.value<std::string>("test") == "value"); + + // This should be a compiler warning and runtime error + //assert(value_map.value<std::string>("test").value() == "value"); + + return 0; +} |