From 2790590996da2f6a0f4d59570de62078a5ac8ae2 Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Mon, 5 Feb 2024 17:39:28 +0100 Subject: tools: Move to new module structure and moving to more schema based generation to convert more easily to json --- modules/tools/tests/SConscript | 31 +++++++++++++++++++++++ modules/tools/tests/c_iface.cpp | 56 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 modules/tools/tests/SConscript create mode 100644 modules/tools/tests/c_iface.cpp (limited to 'modules/tools/tests') 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 +#include + +#include "../c++/c_gen_iface.hpp" + +#include + +namespace { +namespace schema { +using namespace saw::schema; + +using TestEmptyInterface = Interface<>; + +using TestOneFunctionInterface = Interface< + Member, "one"> +>; +} + +template +void test_generate(std::string& res){ + using namespace saw; + + data c_iface; + { + auto eov = generate_c_interface(c_iface); + SAW_EXPECT(eov.is_value(), "Couldn't generate interface info"); + } + + data j_data; + codec 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(res); + + std::cout<<"\n"<(res); + std::cout<<"\n"<