#include "common.hpp" template void test_multiset() { std::random_device rd; std::mt19937 gen(rd()); for(int ii=0; ii<100; ++ii) { std::multiset o_podmultiset; for(int j=0; j<100; ++j) { int value = random_value(gen); o_podmultiset.insert(value); o_podmultiset.insert(value); } std::multiset o_isermultiset; for(int j=0; j<100; ++j) { StructInternalSerialize value = { random_value(gen), random_value(gen) }; o_isermultiset.insert(value); o_isermultiset.insert(value); } std::multiset o_isplmultiset; for(int j=0; j<100; ++j) { StructInternalSplit value = { random_value(gen), random_value(gen) }; o_isplmultiset.insert(value); o_isplmultiset.insert(value); } std::multiset o_esermultiset; for(int j=0; j<100; ++j) { StructExternalSerialize value = { random_value(gen), random_value(gen) }; o_esermultiset.insert(value); o_esermultiset.insert(value); } std::multiset o_esplmultiset; for(int j=0; j<100; ++j) { StructExternalSplit value = { random_value(gen), random_value(gen) }; o_esplmultiset.insert(value); o_esplmultiset.insert(value); } std::ostringstream os; { OArchive oar(os); oar(o_podmultiset); oar(o_isermultiset); oar(o_isplmultiset); oar(o_esermultiset); oar(o_esplmultiset); } std::multiset i_podmultiset; std::multiset i_isermultiset; std::multiset i_isplmultiset; std::multiset i_esermultiset; std::multiset i_esplmultiset; std::istringstream is(os.str()); { IArchive iar(is); iar(i_podmultiset); iar(i_isermultiset); iar(i_isplmultiset); iar(i_esermultiset); iar(i_esplmultiset); } for(auto const & p : i_podmultiset) { BOOST_CHECK_EQUAL(o_podmultiset.count(p), i_podmultiset.count(p)); } for(auto const & p : i_isermultiset) { BOOST_CHECK_EQUAL(o_isermultiset.count(p), i_isermultiset.count(p)); } for(auto const & p : i_isplmultiset) { BOOST_CHECK_EQUAL(o_isplmultiset.count(p), i_isplmultiset.count(p)); } for(auto const & p : i_esermultiset) { BOOST_CHECK_EQUAL(o_esermultiset.count(p), i_esermultiset.count(p)); } for(auto const & p : i_esplmultiset) { BOOST_CHECK_EQUAL(o_esplmultiset.count(p), i_esplmultiset.count(p)); } } } BOOST_AUTO_TEST_CASE( binary_multiset ) { test_multiset(); } BOOST_AUTO_TEST_CASE( portable_binary_multiset ) { test_multiset(); } BOOST_AUTO_TEST_CASE( xml_multiset ) { test_multiset(); } BOOST_AUTO_TEST_CASE( json_multiset ) { test_multiset(); }