mirror of
https://github.com/USCiLab/cereal.git
synced 2025-10-18 01:45:52 +02:00
Adding additional tests to cover issue #79
This commit is contained in:
@@ -169,6 +169,41 @@ void load_minimal( Archive const &, Issue79Struct & val, std::int32_t const & xx
|
|||||||
val.x = xx;
|
val.x = xx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct Issue79StructInternal
|
||||||
|
{
|
||||||
|
Issue79StructInternal() = default;
|
||||||
|
Issue79StructInternal( std::int32_t xx ) : x(xx) {}
|
||||||
|
std::int32_t x;
|
||||||
|
|
||||||
|
template <class Archive, cereal::traits::DisableIf<std::is_same<Archive, cereal::BinaryOutputArchive>::value ||
|
||||||
|
std::is_same<Archive, cereal::PortableBinaryOutputArchive>::value> = cereal::traits::sfinae>
|
||||||
|
std::string save_minimal( Archive const & ) const
|
||||||
|
{
|
||||||
|
return std::to_string( x );
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class Archive, cereal::traits::DisableIf<std::is_same<Archive, cereal::BinaryInputArchive>::value ||
|
||||||
|
std::is_same<Archive, cereal::PortableBinaryInputArchive>::value> = cereal::traits::sfinae>
|
||||||
|
void load_minimal( Archive const &, std::string const & str )
|
||||||
|
{
|
||||||
|
x = std::stoi( str );
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class Archive, cereal::traits::EnableIf<std::is_same<Archive, cereal::BinaryOutputArchive>::value ||
|
||||||
|
std::is_same<Archive, cereal::PortableBinaryOutputArchive>::value> = cereal::traits::sfinae>
|
||||||
|
std::int32_t save_minimal( Archive const & ) const
|
||||||
|
{
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class Archive, cereal::traits::EnableIf<std::is_same<Archive, cereal::BinaryInputArchive>::value ||
|
||||||
|
std::is_same<Archive, cereal::PortableBinaryInputArchive>::value> = cereal::traits::sfinae>
|
||||||
|
void load_minimal( Archive const &, std::int32_t const & xx )
|
||||||
|
{
|
||||||
|
x = xx;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
template <class IArchive, class OArchive>
|
template <class IArchive, class OArchive>
|
||||||
void test_structs_minimal()
|
void test_structs_minimal()
|
||||||
{
|
{
|
||||||
@@ -181,22 +216,26 @@ void test_structs_minimal()
|
|||||||
random_value<std::uint32_t>(gen), random_value<uint8_t>(gen) % 2 ? true : false };
|
random_value<std::uint32_t>(gen), random_value<uint8_t>(gen) % 2 ? true : false };
|
||||||
|
|
||||||
Issue79Struct o_struct2 = { random_value<std::int32_t>(gen) };
|
Issue79Struct o_struct2 = { random_value<std::int32_t>(gen) };
|
||||||
|
Issue79StructInternal o_struct3 = { random_value<std::int32_t>(gen) };
|
||||||
|
|
||||||
std::ostringstream os;
|
std::ostringstream os;
|
||||||
{
|
{
|
||||||
OArchive oar(os);
|
OArchive oar(os);
|
||||||
oar( o_struct );
|
oar( o_struct );
|
||||||
oar( o_struct2 );
|
oar( o_struct2 );
|
||||||
|
oar( o_struct3 );
|
||||||
}
|
}
|
||||||
|
|
||||||
decltype(o_struct) i_struct;
|
decltype(o_struct) i_struct;
|
||||||
decltype(o_struct2) i_struct2;
|
decltype(o_struct2) i_struct2;
|
||||||
|
decltype(o_struct3) i_struct3;
|
||||||
|
|
||||||
std::istringstream is(os.str());
|
std::istringstream is(os.str());
|
||||||
{
|
{
|
||||||
IArchive iar(is);
|
IArchive iar(is);
|
||||||
iar( i_struct );
|
iar( i_struct );
|
||||||
iar( i_struct2 );
|
iar( i_struct2 );
|
||||||
|
iar( i_struct3 );
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_CHECK(o_struct.mm.x == i_struct.mm.x);
|
BOOST_CHECK(o_struct.mm.x == i_struct.mm.x);
|
||||||
@@ -206,6 +245,8 @@ void test_structs_minimal()
|
|||||||
BOOST_CHECK(o_struct.nmmv.x == i_struct.nmmv.x);
|
BOOST_CHECK(o_struct.nmmv.x == i_struct.nmmv.x);
|
||||||
|
|
||||||
BOOST_CHECK(o_struct2.x == i_struct2.x);
|
BOOST_CHECK(o_struct2.x == i_struct2.x);
|
||||||
|
|
||||||
|
BOOST_CHECK(o_struct3.x == i_struct3.x);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user