aboutsummaryrefslogtreecommitdiff
path: root/test/conf/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/conf/main.cpp')
-rw-r--r--test/conf/main.cpp54
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;
+}