summaryrefslogtreecommitdiff
path: root/modules/tools/tests
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2024-02-05 17:39:28 +0100
committerClaudius "keldu" Holeksa <mail@keldu.de>2024-02-05 17:39:28 +0100
commit2790590996da2f6a0f4d59570de62078a5ac8ae2 (patch)
tree526c188230bd29d5127cc13d10390b1cd134bebc /modules/tools/tests
parent4e45bbc55c4011b919f0af8d43850748209f7f09 (diff)
tools: Move to new module structure and moving to more schema based
generation to convert more easily to json
Diffstat (limited to 'modules/tools/tests')
-rw-r--r--modules/tools/tests/SConscript31
-rw-r--r--modules/tools/tests/c_iface.cpp56
2 files changed, 87 insertions, 0 deletions
diff --git a/modules/tools/tests/SConscript b/modules/tools/tests/SConscript
new file mode 100644
index 0000000..f8ffc92
--- /dev/null
+++ b/modules/tools/tests/SConscript
@@ -0,0 +1,31 @@
+#!/bin/false
+
+import os
+import os.path
+import glob
+
+
+Import('env')
+
+dir_path = Dir('.').abspath
+
+# Environment for base library
+test_cases_env = env.Clone();
+
+test_cases_env.Append(LIBS=['forstio-test']);
+
+test_cases_env.sources = sorted(glob.glob(dir_path + "/*.cpp"))
+test_cases_env.headers = sorted(glob.glob(dir_path + "/*.hpp"))
+
+env.sources += test_cases_env.sources;
+env.headers += test_cases_env.headers;
+
+objects_static = []
+test_cases_env.add_source_files(objects_static, test_cases_env.sources, shared=False);
+test_cases_env.program = test_cases_env.Program('#bin/tests', [objects_static, env.library_static]);
+
+# Set Alias
+env.Alias('test', test_cases_env.program);
+env.Alias('check', test_cases_env.program);
+
+env.targets += ['test','check'];
diff --git a/modules/tools/tests/c_iface.cpp b/modules/tools/tests/c_iface.cpp
new file mode 100644
index 0000000..121605a
--- /dev/null
+++ b/modules/tools/tests/c_iface.cpp
@@ -0,0 +1,56 @@
+#include <forstio/test/suite.hpp>
+#include <forstio/codec/json/json.hpp>
+
+#include "../c++/c_gen_iface.hpp"
+
+#include <iostream>
+
+namespace {
+namespace schema {
+using namespace saw::schema;
+
+using TestEmptyInterface = Interface<>;
+
+using TestOneFunctionInterface = Interface<
+ Member<Function<Int32, Int32>, "one">
+>;
+}
+
+template<typename Schema>
+void test_generate(std::string& res){
+ using namespace saw;
+
+ data<schema::CIface> c_iface;
+ {
+ auto eov = generate_c_interface<Schema>(c_iface);
+ SAW_EXPECT(eov.is_value(), "Couldn't generate interface info");
+ }
+
+ data<schema::CIface, encode::Json> j_data;
+ codec<schema::CIface, encode::Json> j_codec;
+
+ {
+ auto eov = j_codec.encode(c_iface, j_data);
+ SAW_EXPECT(eov.is_value(), "Couldn't encode data");
+ }
+
+ res = convert_to_string(j_data.get_buffer());
+}
+
+SAW_TEST("CIface Empty Interface"){
+ using namespace saw;
+
+ std::string res;
+ test_generate<schema::TestEmptyInterface>(res);
+
+ std::cout<<"\n"<<res<<"\n"<<std::endl;
+}
+
+SAW_TEST("CIface One Function Interface"){
+ using namespace saw;
+
+ std::string res;
+ test_generate<schema::TestOneFunctionInterface>(res);
+ std::cout<<"\n"<<res<<"\n"<<std::endl;
+}
+}