aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
author0xFFFC0000 <0xFFFC0000@proton.me>2024-12-13 19:49:55 +0000
committer0xFFFC0000 <0xFFFC0000@proton.me>2024-12-13 19:49:55 +0000
commit13df862535321d910f42da011b951d7ed87a2ec8 (patch)
tree039d0c27d5535fc73bd4824fbfcd15c8ff5e1681 /tests
parent58a1d54a4f90a235616ede3f8ebae2b8dca41589 (diff)
downloadmonzero-core-13df862535321d910f42da011b951d7ed87a2ec8.tar.gz
monzero-core-13df862535321d910f42da011b951d7ed87a2ec8.tar.xz
monzero-core-13df862535321d910f42da011b951d7ed87a2ec8.zip
contrib: force (de)serialization to create params section incase there is none.
Co-authored-by: Boog900 <boog900@tutanota.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/unit_tests/epee_serialization.cpp68
1 files changed, 68 insertions, 0 deletions
diff --git a/tests/unit_tests/epee_serialization.cpp b/tests/unit_tests/epee_serialization.cpp
index f46630615..5e5b6e40f 100644
--- a/tests/unit_tests/epee_serialization.cpp
+++ b/tests/unit_tests/epee_serialization.cpp
@@ -29,8 +29,11 @@
#include <cstdint>
#include <gtest/gtest.h>
+#include <vector>
+#include "serialization/keyvalue_serialization.h"
#include "storages/portable_storage.h"
+#include "storages/portable_storage_template_helper.h"
#include "span.h"
TEST(epee_binary, two_keys)
@@ -54,3 +57,68 @@ TEST(epee_binary, duplicate_key)
epee::serialization::portable_storage storage{};
EXPECT_FALSE(storage.load_from_binary(data));
}
+
+namespace
+{
+
+template<typename t_param>
+struct ParentObjWithOptChild
+{
+ t_param params;
+
+ ParentObjWithOptChild(): params{} {}
+
+ BEGIN_KV_SERIALIZE_MAP()
+ KV_SERIALIZE(params)
+ END_KV_SERIALIZE_MAP()
+};
+
+struct ObjWithOptChild
+{
+ bool test_value;
+
+ BEGIN_KV_SERIALIZE_MAP()
+ KV_SERIALIZE_OPT(test_value, true);
+ END_KV_SERIALIZE_MAP()
+};
+}
+
+TEST(epee_binary, serialize_deserialize)
+{
+ ParentObjWithOptChild<ObjWithOptChild> o;
+ std::string o_json;
+ o.params.test_value = true;
+
+ EXPECT_TRUE(epee::serialization::store_t_to_json(o, o_json));
+ EXPECT_TRUE(o.params.test_value);
+
+ EXPECT_TRUE(epee::serialization::load_t_from_json(o, o_json));
+ EXPECT_TRUE(o.params.test_value);
+
+ ParentObjWithOptChild<ObjWithOptChild> o2;
+ std::string o2_json;
+ o.params.test_value = false;
+
+ EXPECT_TRUE(epee::serialization::store_t_to_json(o2, o2_json));
+ EXPECT_FALSE(o2.params.test_value);
+
+ EXPECT_TRUE(epee::serialization::load_t_from_json(o2, o2_json));
+ EXPECT_FALSE(o2.params.test_value);
+
+ // compiler sets default value of test_value to false
+ ParentObjWithOptChild<ObjWithOptChild> o3;
+ std::string o3_json;
+
+ EXPECT_TRUE(epee::serialization::store_t_to_json(o3, o3_json));
+ EXPECT_FALSE(o3.params.test_value);
+
+ EXPECT_TRUE(epee::serialization::load_t_from_json(o3, o3_json));
+ EXPECT_FALSE(o3.params.test_value);
+
+ // test optional field default initialization.
+ ParentObjWithOptChild<ObjWithOptChild> o4;
+ std::string o4_json = "{\"params\": {}}";
+
+ EXPECT_TRUE(epee::serialization::load_t_from_json(o4, o4_json));
+ EXPECT_TRUE(o4.params.test_value);
+}