void test_list() { std::random_device rd; std::mt19937 gen(rd()); for(int ii=0; ii<100; ++ii) { std::list<int> o_podlist(100); for(auto & elem : o_podlist) elem = random_value<int>(gen); std::list<StructInternalSerialize> o_iserlist(100); for(auto & elem : o_iserlist) elem = StructInternalSerialize( random_value<int>(gen), random_value<int>(gen) ); std::list<StructInternalSplit> o_ispllist(100); for(auto & elem : o_ispllist) elem = StructInternalSplit( random_value<int>(gen), random_value<int>(gen) ); std::list<StructExternalSerialize> o_eserlist(100); for(auto & elem : o_eserlist) elem = StructExternalSerialize( random_value<int>(gen), random_value<int>(gen) ); std::list<StructExternalSplit> o_espllist(100); for(auto & elem : o_espllist) elem = StructExternalSplit( random_value<int>(gen), random_value<int>(gen) ); std::ostringstream os; { OArchive oar(os); oar(o_podlist); oar(o_iserlist); oar(o_ispllist); oar(o_eserlist); oar(o_espllist); } std::list<int> i_podlist; std::list<StructInternalSerialize> i_iserlist; std::list<StructInternalSplit> i_ispllist; std::list<StructExternalSerialize> i_eserlist; std::list<StructExternalSplit> i_espllist; std::istringstream is(os.str()); { IArchive iar(is); iar(i_podlist); iar(i_iserlist); iar(i_ispllist); iar(i_eserlist); iar(i_espllist); } BOOST_CHECK_EQUAL_COLLECTIONS(i_podlist.begin(), i_podlist.end(), o_podlist.begin(), o_podlist.end()); BOOST_CHECK_EQUAL_COLLECTIONS(i_iserlist.begin(), i_iserlist.end(), o_iserlist.begin(), o_iserlist.end()); BOOST_CHECK_EQUAL_COLLECTIONS(i_ispllist.begin(), i_ispllist.end(), o_ispllist.begin(), o_ispllist.end()); BOOST_CHECK_EQUAL_COLLECTIONS(i_eserlist.begin(), i_eserlist.end(), o_eserlist.begin(), o_eserlist.end()); BOOST_CHECK_EQUAL_COLLECTIONS(i_espllist.begin(), i_espllist.end(), o_espllist.begin(), o_espllist.end()); } }
void test_valarray() { std::random_device rd; std::mt19937 gen(rd()); for (int ii = 0; ii<100; ++ii) { std::valarray<int> o_podvalarray(100); for (auto & elem : o_podvalarray) elem = random_value<int>(gen); std::valarray<StructInternalSerialize> o_iservalarray(100); for (auto & elem : o_iservalarray) elem = StructInternalSerialize(random_value<int>(gen), random_value<int>(gen)); std::valarray<StructInternalSplit> o_isplvalarray(100); for (auto & elem : o_isplvalarray) elem = StructInternalSplit(random_value<int>(gen), random_value<int>(gen)); std::valarray<StructExternalSerialize> o_eservalarray(100); for (auto & elem : o_eservalarray) elem = StructExternalSerialize(random_value<int>(gen), random_value<int>(gen)); std::valarray<StructExternalSplit> o_esplvalarray(100); for (auto & elem : o_esplvalarray) elem = StructExternalSplit(random_value<int>(gen), random_value<int>(gen)); std::ostringstream os; { OArchive oar(os); oar(o_podvalarray); oar(o_iservalarray); oar(o_isplvalarray); oar(o_eservalarray); oar(o_esplvalarray); } std::valarray<int> i_podvalarray; std::valarray<StructInternalSerialize> i_iservalarray; std::valarray<StructInternalSplit> i_isplvalarray; std::valarray<StructExternalSerialize> i_eservalarray; std::valarray<StructExternalSplit> i_esplvalarray; std::istringstream is(os.str()); { IArchive iar(is); iar(i_podvalarray); iar(i_iservalarray); iar(i_isplvalarray); iar(i_eservalarray); iar(i_esplvalarray); } BOOST_CHECK_EQUAL(i_podvalarray.size(), o_podvalarray.size()); BOOST_CHECK_EQUAL(i_iservalarray.size(), o_iservalarray.size()); BOOST_CHECK_EQUAL(i_isplvalarray.size(), o_isplvalarray.size()); BOOST_CHECK_EQUAL(i_eservalarray.size(), o_eservalarray.size()); BOOST_CHECK_EQUAL(i_esplvalarray.size(), o_esplvalarray.size()); BOOST_CHECK_EQUAL_COLLECTIONS(std::begin(i_podvalarray), std::end(i_podvalarray), std::begin(o_podvalarray), std::end(o_podvalarray)); BOOST_CHECK_EQUAL_COLLECTIONS(std::begin(i_iservalarray), std::end(i_iservalarray), std::begin(o_iservalarray), std::end(o_iservalarray)); BOOST_CHECK_EQUAL_COLLECTIONS(std::begin(i_isplvalarray), std::end(i_isplvalarray), std::begin(o_isplvalarray), std::end(o_isplvalarray)); BOOST_CHECK_EQUAL_COLLECTIONS(std::begin(i_eservalarray), std::end(i_eservalarray), std::begin(o_eservalarray), std::end(o_eservalarray)); BOOST_CHECK_EQUAL_COLLECTIONS(std::begin(i_esplvalarray), std::end(i_esplvalarray), std::begin(o_esplvalarray), std::end(o_esplvalarray)); } }
void test_vector() { std::random_device rd; std::mt19937 gen(rd()); for(int ii=0; ii<100; ++ii) { std::vector<int> o_podvector(100); for(auto & elem : o_podvector) elem = random_value<int>(gen); std::vector<bool> o_boolvector; o_boolvector.resize(100); for( size_t i = 0; i < 100; ++i ) o_boolvector[i] = (random_value<int>(gen) % 2) == 0; std::vector<StructInternalSerialize> o_iservector(100); for(auto & elem : o_iservector) elem = StructInternalSerialize( random_value<int>(gen), random_value<int>(gen) ); std::vector<StructInternalSplit> o_isplvector(100); for(auto & elem : o_isplvector) elem = StructInternalSplit( random_value<int>(gen), random_value<int>(gen) ); std::vector<StructExternalSerialize> o_eservector(100); for(auto & elem : o_eservector) elem = StructExternalSerialize( random_value<int>(gen), random_value<int>(gen) ); std::vector<StructExternalSplit> o_esplvector(100); for(auto & elem : o_esplvector) elem = StructExternalSplit( random_value<int>(gen), random_value<int>(gen) ); std::ostringstream os; { OArchive oar(os); oar(o_podvector); oar(o_boolvector); oar(o_iservector); oar(o_isplvector); oar(o_eservector); oar(o_esplvector); } std::vector<int> i_podvector; std::vector<bool> i_boolvector; std::vector<StructInternalSerialize> i_iservector; std::vector<StructInternalSplit> i_isplvector; std::vector<StructExternalSerialize> i_eservector; std::vector<StructExternalSplit> i_esplvector; std::istringstream is(os.str()); { IArchive iar(is); iar(i_podvector); iar(i_boolvector); iar(i_iservector); iar(i_isplvector); iar(i_eservector); iar(i_esplvector); } BOOST_CHECK_EQUAL(i_podvector.size(), o_podvector.size()); BOOST_CHECK_EQUAL(i_boolvector.size(), o_boolvector.size()); BOOST_CHECK_EQUAL(i_iservector.size(), o_iservector.size()); BOOST_CHECK_EQUAL(i_isplvector.size(), o_isplvector.size()); BOOST_CHECK_EQUAL(i_eservector.size(), o_eservector.size()); BOOST_CHECK_EQUAL(i_esplvector.size(), o_esplvector.size()); BOOST_CHECK_EQUAL_COLLECTIONS(i_podvector.begin(), i_podvector.end(), o_podvector.begin(), o_podvector.end()); BOOST_CHECK_EQUAL_COLLECTIONS(i_boolvector.begin(), i_boolvector.end(), o_boolvector.begin(), o_boolvector.end()); BOOST_CHECK_EQUAL_COLLECTIONS(i_iservector.begin(), i_iservector.end(), o_iservector.begin(), o_iservector.end()); BOOST_CHECK_EQUAL_COLLECTIONS(i_isplvector.begin(), i_isplvector.end(), o_isplvector.begin(), o_isplvector.end()); BOOST_CHECK_EQUAL_COLLECTIONS(i_eservector.begin(), i_eservector.end(), o_eservector.begin(), o_eservector.end()); BOOST_CHECK_EQUAL_COLLECTIONS(i_esplvector.begin(), i_esplvector.end(), o_esplvector.begin(), o_esplvector.end()); } }
void test_deque() { std::random_device rd; std::mt19937 gen(rd()); for(int ii=0; ii<100; ++ii) { std::deque<int> o_poddeque(100); for(auto & elem : o_poddeque) elem = random_value<int>(gen); std::deque<StructInternalSerialize> o_iserdeque(100); for(auto & elem : o_iserdeque) elem = StructInternalSerialize( random_value<int>(gen), random_value<int>(gen) ); std::deque<StructInternalSplit> o_ispldeque(100); for(auto & elem : o_ispldeque) elem = StructInternalSplit( random_value<int>(gen), random_value<int>(gen) ); std::deque<StructExternalSerialize> o_eserdeque(100); for(auto & elem : o_eserdeque) elem = StructExternalSerialize( random_value<int>(gen), random_value<int>(gen) ); std::deque<StructExternalSplit> o_espldeque(100); for(auto & elem : o_espldeque) elem = StructExternalSplit( random_value<int>(gen), random_value<int>(gen) ); std::ostringstream os; { OArchive oar(os); oar(o_poddeque); oar(o_iserdeque); oar(o_ispldeque); oar(o_eserdeque); oar(o_espldeque); } 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; std::istringstream is(os.str()); { IArchive iar(is); iar(i_poddeque); iar(i_iserdeque); iar(i_ispldeque); iar(i_eserdeque); iar(i_espldeque); } CHECK_EQ(i_poddeque.size(), o_poddeque.size()); CHECK_EQ(i_iserdeque.size(), o_iserdeque.size()); CHECK_EQ(i_ispldeque.size(), o_ispldeque.size()); CHECK_EQ(i_eserdeque.size(), o_eserdeque.size()); CHECK_EQ(i_espldeque.size(), o_espldeque.size()); check_collection(i_poddeque, o_poddeque ); check_collection(i_iserdeque, o_iserdeque); check_collection(i_ispldeque, o_ispldeque); check_collection(i_eserdeque, o_eserdeque); check_collection(i_espldeque, o_espldeque); } }
template <class IArchive, class OArchive> inline void test_valarray() { std::random_device rd; std::mt19937 gen(rd()); for (int ii = 0; ii<100; ++ii) { std::valarray<int> o_podvalarray(100); for (auto & elem : o_podvalarray) elem = random_value<int>(gen); std::valarray<StructInternalSerialize> o_iservalarray(100); for (auto & elem : o_iservalarray) elem = StructInternalSerialize(random_value<int>(gen), random_value<int>(gen)); std::valarray<StructInternalSplit> o_isplvalarray(100); for (auto & elem : o_isplvalarray) elem = StructInternalSplit(random_value<int>(gen), random_value<int>(gen)); std::valarray<StructExternalSerialize> o_eservalarray(100); for (auto & elem : o_eservalarray) elem = StructExternalSerialize(random_value<int>(gen), random_value<int>(gen)); std::valarray<StructExternalSplit> o_esplvalarray(100); for (auto & elem : o_esplvalarray) elem = StructExternalSplit(random_value<int>(gen), random_value<int>(gen)); std::ostringstream os; { OArchive oar(os); oar(o_podvalarray); oar(o_iservalarray); oar(o_isplvalarray); oar(o_eservalarray); oar(o_esplvalarray); } std::valarray<int> i_podvalarray; std::valarray<StructInternalSerialize> i_iservalarray; std::valarray<StructInternalSplit> i_isplvalarray; std::valarray<StructExternalSerialize> i_eservalarray; std::valarray<StructExternalSplit> i_esplvalarray; std::istringstream is(os.str()); { IArchive iar(is); iar(i_podvalarray); iar(i_iservalarray); iar(i_isplvalarray); iar(i_eservalarray); iar(i_esplvalarray); } CHECK_EQ(i_podvalarray.size(), o_podvalarray.size()); CHECK_EQ(i_iservalarray.size(), o_iservalarray.size()); CHECK_EQ(i_isplvalarray.size(), o_isplvalarray.size()); CHECK_EQ(i_eservalarray.size(), o_eservalarray.size()); CHECK_EQ(i_esplvalarray.size(), o_esplvalarray.size()); check_collection(i_podvalarray , o_podvalarray ); check_collection(i_iservalarray, o_iservalarray); check_collection(i_isplvalarray, o_isplvalarray); check_collection(i_eservalarray, o_eservalarray); check_collection(i_esplvalarray, o_esplvalarray); } }