// 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 using unlimited_storage_type = boost::histogram::unlimited_storage<>; using namespace boost::histogram; template unlimited_storage_type prepare(std::size_t n, const T x) { std::unique_ptr v(new T[n]); std::fill(v.get(), v.get() + n, static_cast(0)); v.get()[0] = x; return unlimited_storage_type(n, v.get()); } template unlimited_storage_type prepare(std::size_t n) { return unlimited_storage_type(n, static_cast(nullptr)); } template void serialization_impl() { const auto a = prepare(1, T(1)); std::string buf; { std::ostringstream os; boost::archive::text_oarchive oa(os); oa << a; buf = os.str(); } unlimited_storage_type b; BOOST_TEST(!(a == b)); { std::istringstream is(buf); boost::archive::text_iarchive ia(is); ia >> b; } BOOST_TEST(a == b); } int main() { // serialization_test { serialization_impl(); serialization_impl(); serialization_impl(); serialization_impl(); serialization_impl(); serialization_impl(); } return boost::report_errors(); }