aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2019-11-03 00:18:10 +0200
committerAqua-sama <aqua@iserlohn-fortress.net>2019-11-03 00:20:41 +0200
commitf3a4607d6a722a862af0eb9747a15dcdf624b6fb (patch)
tree9885709cdff55a865be6c03c591a9757680b0396 /test
parentChange spdlog from makedepends to depends (diff)
downloadsmolbote-f3a4607d6a722a862af0eb9747a15dcdf624b6fb.tar.xz
Drop boost dependency
- wrote not-invented-here config file parser and conf class - spent obscene amount of time plugging in said conf class
Diffstat (limited to 'test')
-rw-r--r--test/conf/main.cpp54
-rw-r--r--test/conf/meson.build6
-rw-r--r--test/conf/smolbote.cfg5
3 files changed, 65 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;
+}
diff --git a/test/conf/meson.build b/test/conf/meson.build
new file mode 100644
index 0000000..de67db7
--- /dev/null
+++ b/test/conf/meson.build
@@ -0,0 +1,6 @@
+e = executable('conf_test',
+ dependencies: [dep_qt5, dep_configuration],
+ sources: 'main.cpp'
+)
+
+test('conf_test', e, workdir : meson.source_root()/'test/conf')
diff --git a/test/conf/smolbote.cfg b/test/conf/smolbote.cfg
new file mode 100644
index 0000000..25467ef
--- /dev/null
+++ b/test/conf/smolbote.cfg
@@ -0,0 +1,5 @@
+# this is a comment
+test = value
+plugins.path = /usr/local/lib/smolbote/plugins
+
+integer-2 = 22