mirror of
https://github.com/monero-project/monero.git
synced 2024-12-24 23:19:44 -05:00
Merge pull request #9574
e9adafa
contrib: force (de)serialization to create params section incase there is none. Co-authored-by: Boog900 <boog900@tutanota.com> (0xFFFC0000)
This commit is contained in:
commit
2f770a3d7c
@ -165,6 +165,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"
|
||||||
|
|
||||||
|
|
||||||
|
@ -77,6 +77,67 @@ struct ObjOfInts
|
|||||||
KV_SERIALIZE(x)
|
KV_SERIALIZE(x)
|
||||||
END_KV_SERIALIZE_MAP()
|
END_KV_SERIALIZE_MAP()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(epee_binary, any_empty_seq)
|
TEST(epee_binary, any_empty_seq)
|
||||||
|
Loading…
Reference in New Issue
Block a user