diff options
author | Aqua-sama <aqua@iserlohn-fortress.net> | 2019-11-03 00:18:10 +0200 |
---|---|---|
committer | Aqua-sama <aqua@iserlohn-fortress.net> | 2019-11-03 00:20:41 +0200 |
commit | f3a4607d6a722a862af0eb9747a15dcdf624b6fb (patch) | |
tree | 9885709cdff55a865be6c03c591a9757680b0396 /test/conf | |
parent | Change spdlog from makedepends to depends (diff) | |
download | smolbote-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/conf')
-rw-r--r-- | test/conf/main.cpp | 54 | ||||
-rw-r--r-- | test/conf/meson.build | 6 | ||||
-rw-r--r-- | test/conf/smolbote.cfg | 5 |
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 |