diff options
author | Claudius "keldu" Holeksa <mail@keldu.de> | 2024-02-05 17:39:28 +0100 |
---|---|---|
committer | Claudius "keldu" Holeksa <mail@keldu.de> | 2024-02-05 17:39:28 +0100 |
commit | 2790590996da2f6a0f4d59570de62078a5ac8ae2 (patch) | |
tree | 526c188230bd29d5127cc13d10390b1cd134bebc /modules/tools/tests | |
parent | 4e45bbc55c4011b919f0af8d43850748209f7f09 (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/SConscript | 31 | ||||
-rw-r--r-- | modules/tools/tests/c_iface.cpp | 56 |
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; +} +} |