#include "common.hpp" template void test_array() { std::random_device rd; std::mt19937 gen(rd()); for(int ii=0; ii<100; ++ii) { std::array o_podarray; for(auto & elem : o_podarray) elem = random_value(gen); std::array o_iserarray; for(auto & elem : o_iserarray) elem = StructInternalSerialize( random_value(gen), random_value(gen) ); std::array o_isplarray; for(auto & elem : o_isplarray) elem = StructInternalSplit( random_value(gen), random_value(gen) ); std::array o_eserarray; for(auto & elem : o_eserarray) elem = StructExternalSerialize( random_value(gen), random_value(gen) ); std::array o_esplarray; for(auto & elem : o_esplarray) elem = StructExternalSplit( random_value(gen), random_value(gen) ); std::ostringstream os; { OArchive oar(os); oar(o_podarray); oar(o_iserarray); oar(o_isplarray); oar(o_eserarray); oar(o_esplarray); } std::array i_podarray; std::array i_iserarray; std::array i_isplarray; std::array i_eserarray; std::array i_esplarray; std::istringstream is(os.str()); { IArchive iar(is); iar(i_podarray); iar(i_iserarray); iar(i_isplarray); iar(i_eserarray); iar(i_esplarray); } BOOST_CHECK_EQUAL_COLLECTIONS(i_podarray.begin(), i_podarray.end(), o_podarray.begin(), o_podarray.end()); BOOST_CHECK_EQUAL_COLLECTIONS(i_iserarray.begin(), i_iserarray.end(), o_iserarray.begin(), o_iserarray.end()); BOOST_CHECK_EQUAL_COLLECTIONS(i_isplarray.begin(), i_isplarray.end(), o_isplarray.begin(), o_isplarray.end()); BOOST_CHECK_EQUAL_COLLECTIONS(i_eserarray.begin(), i_eserarray.end(), o_eserarray.begin(), o_eserarray.end()); BOOST_CHECK_EQUAL_COLLECTIONS(i_esplarray.begin(), i_esplarray.end(), o_esplarray.begin(), o_esplarray.end()); } } BOOST_AUTO_TEST_CASE( binary_array ) { test_array(); } BOOST_AUTO_TEST_CASE( portable_binary_array ) { test_array(); } BOOST_AUTO_TEST_CASE( xml_array ) { test_array(); } BOOST_AUTO_TEST_CASE( json_array ) { test_array(); }