// Copyright 2018 Hans Dembinski // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt // or copy at http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include #include #include #include #include #include #include #include #include using namespace boost::histogram; template void test_serialization(const char* ref) { auto a = storage_adaptor(); a.reset(3); a[1] += 1; a[2] += 2; std::ostringstream os; { boost::archive::xml_oarchive oa(os); oa << boost::serialization::make_nvp("storage", a); } auto b = storage_adaptor(); BOOST_TEST(!(a == b)); { std::istringstream is(ref); boost::archive::xml_iarchive ia(is); ia >> boost::serialization::make_nvp("storage", b); } BOOST_TEST(a == b); } int main() { test_serialization>( "\n" "\n" "\n" "\n" " \n" " \n" " 3\n" " 0\n" " 0\n" " 1\n" " 2\n" " \n" " \n" "\n" "\n\n"); test_serialization>( "\n" "\n" "\n" "\n" " \n" " 3\n" " \n" " 0\n" " 1\n" " 2\n" " \n" " \n" "\n" "\n\n"); test_serialization>( "\n" "\n" "\n" "\n" " \n" " 3\n" " \n" " 2\n" " 0\n" " \n" " 1\n" " 1.00000000000000000e+00\n" " \n" " \n" " 2\n" " 2.00000000000000000e+00\n" " \n" " \n" " \n" "\n" "\n\n"); return boost::report_errors(); }