diff options
author | Claudius 'keldu' Holeksa <mail@keldu.de> | 2024-08-02 15:42:33 +0200 |
---|---|---|
committer | Claudius 'keldu' Holeksa <mail@keldu.de> | 2024-08-02 15:42:33 +0200 |
commit | 465c1379ceec8db1fc8990a3fe3bda2f2786d339 (patch) | |
tree | 4d079585f9601330070c35ee902a33151714f578 | |
parent | bbe2baab28853ef4a62fa748e690c7bd9e4215be (diff) |
wip
-rw-r--r-- | modules/codec/c++/simple.hpp | 10 | ||||
-rw-r--r-- | modules/codec/tests/transport.cpp | 57 |
2 files changed, 63 insertions, 4 deletions
diff --git a/modules/codec/c++/simple.hpp b/modules/codec/c++/simple.hpp index 1afdc33..b0cdfd9 100644 --- a/modules/codec/c++/simple.hpp +++ b/modules/codec/c++/simple.hpp @@ -14,16 +14,18 @@ struct KelSimple {}; template<typename T> class data<T, encode::KelSimple> { private: - ring_buffer buffer_; + own<buffer> buffer_; public: - data() = default; + data(): + buffer_{heap<ring_buffer>()} + {} - data(ring_buffer buffer__): + data(own<buffer> buffer__): buffer_{std::move(buffer__)} {} buffer& get_buffer(){ - return buffer_; + return *buffer_; } }; diff --git a/modules/codec/tests/transport.cpp b/modules/codec/tests/transport.cpp new file mode 100644 index 0000000..cffee24 --- /dev/null +++ b/modules/codec/tests/transport.cpp @@ -0,0 +1,57 @@ +#include <forstio/test/suite.hpp> +#include "../c++/data.hpp" +#include "../c++/simple.hpp" + +#include <iostream> + +namespace { +namespace schema { +using namespace saw::schema; + +using ZeroDimArray = Array<Int32,0>; +using OneDimArray = Array<Int32,1>; +using TwoDimArray = Array<Int32,2>; +using ThreeDimArray = Array<Int32,3>; + +using TestStruct = Struct< + Member<TwoDimArray, "two_dim_array">, + Member<UInt64, "number"> +>; + +} + +SAW_TEST("KelSimple Struct write and read back"){ + using namespace saw; + + ring_buffer buffer{2048u}; + + data<schema::TestStruct,encode::Native> native; + + data<schema::TestStruct,encode::KelSimple> simple; + + auto& tda = native.template get<"two_dim_array">(); + tda = {1,2}; + + tda.at(0,0).set(5); + tda.at(0,1).set(3); + native.template get<"number">().set(410); + + codec<schema::TestStruct, encode::KelSimple> codec; + + auto eov = codec.encode(native, simple); + SAW_EXPECT(eov.is_value(), "Encoding error"); + + // Reset values + native = {}; + + eov = codec.decode(simple, native); + SAW_EXPECT(eov.is_value(), "Decoding error"); + + auto& dec_tda = native.template get<"two_dim_array">(); + + SAW_EXPECT(dec_tda.at(0,0).get() == 5, "Incorrect Decoding in array 0,0"); + SAW_EXPECT(dec_tda.at(0,1).get() == 3, "Incorrect Decoding in array 0,1"); + SAW_EXPECT(native.template get<"number">().get() == 410, "Incorrect Decoding in number"); +} + +} |