mirror of
https://github.com/monero-project/monero.git
synced 2024-12-26 23:49:31 -05:00
contrib: force (de)serialization to create params section incase there is none.
Co-authored-by: Boog900 <boog900@tutanota.com>
This commit is contained in:
parent
58a1d54a4f
commit
13df862535
@ -171,6 +171,13 @@
|
|||||||
epee::serialization::store_t_to_json(static_cast<epee::json_rpc::error_response&>(rsp), response_info.m_body); \
|
epee::serialization::store_t_to_json(static_cast<epee::json_rpc::error_response&>(rsp), response_info.m_body); \
|
||||||
return true; \
|
return true; \
|
||||||
} \
|
} \
|
||||||
|
epee::serialization::storage_entry params_; \
|
||||||
|
params_ = epee::serialization::storage_entry(epee::serialization::section()); \
|
||||||
|
if(!ps.get_value("params", params_, nullptr)) \
|
||||||
|
{ \
|
||||||
|
epee::serialization::section params_section; \
|
||||||
|
ps.set_value("params", std::move(params_section), nullptr); \
|
||||||
|
} \
|
||||||
if(false) return true; //just a stub to have "else if"
|
if(false) return true; //just a stub to have "else if"
|
||||||
|
|
||||||
|
|
||||||
|
@ -29,8 +29,11 @@
|
|||||||
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
#include "serialization/keyvalue_serialization.h"
|
||||||
#include "storages/portable_storage.h"
|
#include "storages/portable_storage.h"
|
||||||
|
#include "storages/portable_storage_template_helper.h"
|
||||||
#include "span.h"
|
#include "span.h"
|
||||||
|
|
||||||
TEST(epee_binary, two_keys)
|
TEST(epee_binary, two_keys)
|
||||||
@ -54,3 +57,68 @@ TEST(epee_binary, duplicate_key)
|
|||||||
epee::serialization::portable_storage storage{};
|
epee::serialization::portable_storage storage{};
|
||||||
EXPECT_FALSE(storage.load_from_binary(data));
|
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);
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user