mirror of
https://github.com/USCiLab/cereal.git
synced 2025-10-18 01:45:52 +02:00
Adding deque unit tests
This commit is contained in:
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
namespace cereal
|
namespace cereal
|
||||||
{
|
{
|
||||||
//! Saving for std::deque all other types to binary
|
//! Saving for std::deque to binary
|
||||||
template <class T, class A>
|
template <class T, class A>
|
||||||
void save( BinaryOutputArchive & ar, std::deque<T, A> const & deque )
|
void save( BinaryOutputArchive & ar, std::deque<T, A> const & deque )
|
||||||
{
|
{
|
||||||
@@ -16,6 +16,16 @@ namespace cereal
|
|||||||
ar & i;
|
ar & i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//! Loading for std::deque all other types from binary (non-const version)
|
||||||
|
template <class T, class A>
|
||||||
|
void save( BinaryOutputArchive & ar, std::deque<T, A> & deque )
|
||||||
|
{
|
||||||
|
ar & deque.size();
|
||||||
|
|
||||||
|
for( auto & i : deque )
|
||||||
|
ar & i;
|
||||||
|
}
|
||||||
|
|
||||||
//! Loading for std::deque all other types to binary
|
//! Loading for std::deque all other types to binary
|
||||||
template <class T, class A>
|
template <class T, class A>
|
||||||
void load( BinaryInputArchive & ar, std::deque<T, A> & deque )
|
void load( BinaryInputArchive & ar, std::deque<T, A> & deque )
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
#include <cereal/binary_archive/memory.hpp>
|
#include <cereal/binary_archive/memory.hpp>
|
||||||
#include <cereal/binary_archive/array.hpp>
|
#include <cereal/binary_archive/array.hpp>
|
||||||
#include <cereal/binary_archive/vector.hpp>
|
#include <cereal/binary_archive/vector.hpp>
|
||||||
|
#include <cereal/binary_archive/deque.hpp>
|
||||||
#include <limits>
|
#include <limits>
|
||||||
#include <random>
|
#include <random>
|
||||||
|
|
||||||
@@ -360,3 +361,69 @@ BOOST_AUTO_TEST_CASE( binary_vector )
|
|||||||
BOOST_CHECK_EQUAL_COLLECTIONS(i_esplvector.begin(), i_esplvector.end(), o_esplvector.begin(), o_esplvector.end());
|
BOOST_CHECK_EQUAL_COLLECTIONS(i_esplvector.begin(), i_esplvector.end(), o_esplvector.begin(), o_esplvector.end());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ######################################################################
|
||||||
|
BOOST_AUTO_TEST_CASE( binary_deque )
|
||||||
|
{
|
||||||
|
std::random_device rd;
|
||||||
|
std::mt19937 gen(rd());
|
||||||
|
|
||||||
|
for(int i=0; i<100; ++i)
|
||||||
|
{
|
||||||
|
std::ostringstream os;
|
||||||
|
cereal::BinaryOutputArchive oar(os);
|
||||||
|
|
||||||
|
std::deque<int> o_poddeque(100);
|
||||||
|
for(auto & elem : o_poddeque)
|
||||||
|
elem = random_value<decltype(o_poddeque)::value_type>(gen);
|
||||||
|
|
||||||
|
std::deque<StructInternalSerialize> o_iserdeque(100);
|
||||||
|
for(auto & elem : o_iserdeque)
|
||||||
|
elem = { random_value<int>(gen), random_value<int>(gen) };
|
||||||
|
|
||||||
|
std::deque<StructInternalSplit> o_ispldeque(100);
|
||||||
|
for(auto & elem : o_ispldeque)
|
||||||
|
elem = { random_value<int>(gen), random_value<int>(gen) };
|
||||||
|
|
||||||
|
std::deque<StructExternalSerialize> o_eserdeque(100);
|
||||||
|
for(auto & elem : o_eserdeque)
|
||||||
|
elem = { random_value<int>(gen), random_value<int>(gen) };
|
||||||
|
|
||||||
|
std::deque<StructExternalSplit> o_espldeque(100);
|
||||||
|
for(auto & elem : o_espldeque)
|
||||||
|
elem = { random_value<int>(gen), random_value<int>(gen) };
|
||||||
|
|
||||||
|
oar & o_poddeque;
|
||||||
|
oar & o_iserdeque;
|
||||||
|
oar & o_ispldeque;
|
||||||
|
oar & o_eserdeque;
|
||||||
|
oar & o_espldeque;
|
||||||
|
|
||||||
|
std::istringstream is(os.str());
|
||||||
|
cereal::BinaryInputArchive iar(is);
|
||||||
|
|
||||||
|
std::deque<int> i_poddeque;
|
||||||
|
std::deque<StructInternalSerialize> i_iserdeque;
|
||||||
|
std::deque<StructInternalSplit> i_ispldeque;
|
||||||
|
std::deque<StructExternalSerialize> i_eserdeque;
|
||||||
|
std::deque<StructExternalSplit> i_espldeque;
|
||||||
|
|
||||||
|
iar & i_poddeque;
|
||||||
|
iar & i_iserdeque;
|
||||||
|
iar & i_ispldeque;
|
||||||
|
iar & i_eserdeque;
|
||||||
|
iar & i_espldeque;
|
||||||
|
|
||||||
|
BOOST_CHECK_EQUAL(i_poddeque.size(), o_poddeque.size());
|
||||||
|
BOOST_CHECK_EQUAL(i_iserdeque.size(), o_iserdeque.size());
|
||||||
|
BOOST_CHECK_EQUAL(i_ispldeque.size(), o_ispldeque.size());
|
||||||
|
BOOST_CHECK_EQUAL(i_eserdeque.size(), o_eserdeque.size());
|
||||||
|
BOOST_CHECK_EQUAL(i_espldeque.size(), o_espldeque.size());
|
||||||
|
|
||||||
|
BOOST_CHECK_EQUAL_COLLECTIONS(i_poddeque.begin(), i_poddeque.end(), o_poddeque.begin(), o_poddeque.end());
|
||||||
|
BOOST_CHECK_EQUAL_COLLECTIONS(i_iserdeque.begin(), i_iserdeque.end(), o_iserdeque.begin(), o_iserdeque.end());
|
||||||
|
BOOST_CHECK_EQUAL_COLLECTIONS(i_ispldeque.begin(), i_ispldeque.end(), o_ispldeque.begin(), o_ispldeque.end());
|
||||||
|
BOOST_CHECK_EQUAL_COLLECTIONS(i_eserdeque.begin(), i_eserdeque.end(), o_eserdeque.begin(), o_eserdeque.end());
|
||||||
|
BOOST_CHECK_EQUAL_COLLECTIONS(i_espldeque.begin(), i_espldeque.end(), o_espldeque.begin(), o_espldeque.end());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user