summaryrefslogtreecommitdiff
path: root/tests/codec.cpp
diff options
context:
space:
mode:
authorClaudius Holeksa <mail@keldu.de>2023-06-27 12:41:56 +0200
committerClaudius Holeksa <mail@keldu.de>2023-06-27 12:41:56 +0200
commit5688c721c610e2a8931d6ec6f84dee2d4d65c763 (patch)
tree3d38ec081061f2d6226a12af93ee092f27882d8c /tests/codec.cpp
parent7668b8aceb42b5a46e1f9ca36d16dbfabe291748 (diff)
c++,codec,core: Added Union to KelSimple and fixed the native data type.
Made some errors more clear as well
Diffstat (limited to 'tests/codec.cpp')
-rw-r--r--tests/codec.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/codec.cpp b/tests/codec.cpp
index 442ae57..7253ecc 100644
--- a/tests/codec.cpp
+++ b/tests/codec.cpp
@@ -18,6 +18,11 @@ using TestStruct = Struct<
Member<UInt64, "number">
>;
+using TestUnion = Union<
+ Member<TwoDimArray, "two_dim_array">,
+ Member<UInt64, "number">
+>;
+
using TestTuple = Tuple<
TwoDimArray,
UInt64
@@ -196,6 +201,31 @@ SAW_TEST("KelSimple Struct write and read back"){
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");
}
+
+SAW_TEST("KelSimple Union write and read back"){
+ using namespace saw;
+
+ data<schema::TestUnion,encode::Native> native;
+ data<schema::TestUnion,encode::KelSimple> simple;
+
+ native.template set<"number">(data<schema::UInt64, encode::Native>{});
+ native.template get<"number">().set(410);
+
+ codec<schema::TestUnion, 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");
+
+ SAW_EXPECT(native.template holds_alternative<"number">(), "Incorrect Decoding in array 0,1");
+ SAW_EXPECT(native.template get<"number">().get() == 410, "Incorrect Decoding in number");
+}
+
SAW_TEST("KelSimple Tuple write and read back"){
using namespace saw;