aboutsummaryrefslogtreecommitdiff
path: root/src/test/serialize_tests.cpp
diff options
context:
space:
mode:
authorMarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz>2023-09-18 13:28:07 +0200
committerMarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz>2023-10-13 10:30:42 +0200
commitfae9054793ff2a15db1a645cce3df749e0de2f39 (patch)
treec82e64d2865680e5d6047f078ff57166ac1142f2 /src/test/serialize_tests.cpp
parent504f1f30ed9033f5f9f20bb722199b96c0b38390 (diff)
test: Use SER_PARAMS_OPFUNC in serialize_tests.cpp
Diffstat (limited to 'src/test/serialize_tests.cpp')
-rw-r--r--src/test/serialize_tests.cpp48
1 files changed, 26 insertions, 22 deletions
diff --git a/src/test/serialize_tests.cpp b/src/test/serialize_tests.cpp
index d18d2623b1..49827be559 100644
--- a/src/test/serialize_tests.cpp
+++ b/src/test/serialize_tests.cpp
@@ -255,10 +255,15 @@ BOOST_AUTO_TEST_CASE(class_methods)
}
}
-enum class BaseFormat {
- RAW,
- HEX,
+struct BaseFormat {
+ const enum {
+ RAW,
+ HEX,
+ } m_base_format;
+ SER_PARAMS_OPFUNC
};
+constexpr BaseFormat RAW{BaseFormat::RAW};
+constexpr BaseFormat HEX{BaseFormat::HEX};
/// (Un)serialize a number as raw byte or 2 hexadecimal chars.
class Base
@@ -272,7 +277,7 @@ public:
template <typename Stream>
void Serialize(Stream& s) const
{
- if (s.GetParams() == BaseFormat::RAW) {
+ if (s.GetParams().m_base_format == BaseFormat::RAW) {
s << m_base_data;
} else {
s << Span{HexStr(Span{&m_base_data, 1})};
@@ -282,7 +287,7 @@ public:
template <typename Stream>
void Unserialize(Stream& s)
{
- if (s.GetParams() == BaseFormat::RAW) {
+ if (s.GetParams().m_base_format == BaseFormat::RAW) {
s >> m_base_data;
} else {
std::string hex{"aa"};
@@ -301,6 +306,8 @@ public:
LOWER,
UPPER,
} m_derived_format;
+
+ SER_PARAMS_OPFUNC
};
class Derived : public Base
@@ -310,7 +317,7 @@ public:
SERIALIZE_METHODS_PARAMS(Derived, obj, DerivedAndBaseFormat, fmt)
{
- READWRITE(WithParams(fmt.m_base_format, AsBase<Base>(obj)));
+ READWRITE(fmt.m_base_format(AsBase<Base>(obj)));
if (ser_action.ForRead()) {
std::string str;
@@ -330,20 +337,20 @@ BOOST_AUTO_TEST_CASE(with_params_base)
DataStream stream;
- stream << WithParams(BaseFormat::RAW, b);
+ stream << RAW(b);
BOOST_CHECK_EQUAL(stream.str(), "\x0F");
b.m_base_data = 0;
- stream >> WithParams(BaseFormat::RAW, b);
+ stream >> RAW(b);
BOOST_CHECK_EQUAL(b.m_base_data, 0x0F);
stream.clear();
- stream << WithParams(BaseFormat::HEX, b);
+ stream << HEX(b);
BOOST_CHECK_EQUAL(stream.str(), "0f");
b.m_base_data = 0;
- stream >> WithParams(BaseFormat::HEX, b);
+ stream >> HEX(b);
BOOST_CHECK_EQUAL(b.m_base_data, 0x0F);
}
@@ -353,45 +360,42 @@ BOOST_AUTO_TEST_CASE(with_params_vector_of_base)
DataStream stream;
- stream << WithParams(BaseFormat::RAW, v);
+ stream << RAW(v);
BOOST_CHECK_EQUAL(stream.str(), "\x02\x0F\xFF");
v[0].m_base_data = 0;
v[1].m_base_data = 0;
- stream >> WithParams(BaseFormat::RAW, v);
+ stream >> RAW(v);
BOOST_CHECK_EQUAL(v[0].m_base_data, 0x0F);
BOOST_CHECK_EQUAL(v[1].m_base_data, 0xFF);
stream.clear();
- stream << WithParams(BaseFormat::HEX, v);
+ stream << HEX(v);
BOOST_CHECK_EQUAL(stream.str(), "\x02"
"0fff");
v[0].m_base_data = 0;
v[1].m_base_data = 0;
- stream >> WithParams(BaseFormat::HEX, v);
+ stream >> HEX(v);
BOOST_CHECK_EQUAL(v[0].m_base_data, 0x0F);
BOOST_CHECK_EQUAL(v[1].m_base_data, 0xFF);
}
+constexpr DerivedAndBaseFormat RAW_LOWER{{BaseFormat::RAW}, DerivedAndBaseFormat::DerivedFormat::LOWER};
+constexpr DerivedAndBaseFormat HEX_UPPER{{BaseFormat::HEX}, DerivedAndBaseFormat::DerivedFormat::UPPER};
+
BOOST_AUTO_TEST_CASE(with_params_derived)
{
Derived d;
d.m_base_data = 0x0F;
d.m_derived_data = "xY";
- DerivedAndBaseFormat fmt;
-
DataStream stream;
- fmt.m_base_format = BaseFormat::RAW;
- fmt.m_derived_format = DerivedAndBaseFormat::DerivedFormat::LOWER;
- stream << WithParams(fmt, d);
+ stream << RAW_LOWER(d);
- fmt.m_base_format = BaseFormat::HEX;
- fmt.m_derived_format = DerivedAndBaseFormat::DerivedFormat::UPPER;
- stream << WithParams(fmt, d);
+ stream << HEX_UPPER(d);
BOOST_CHECK_EQUAL(stream.str(), "\x0F\x02xy"
"0f\x02XY");