From 9d897faecefff1a7477ab7bea98d7786dc4ad20d Mon Sep 17 00:00:00 2001 From: joaquintides Date: Wed, 16 Aug 2023 19:06:33 +0200 Subject: [PATCH] added cfoa_serialization_tests --- test/Jamfile.v2 | 17 ++++++- test/cfoa/serialization_tests.cpp | 79 +++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 test/cfoa/serialization_tests.cpp diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index d5019f3d..5317c3d6 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -242,4 +242,19 @@ for local test in $(CFOA_TESTS) ; } -alias cfoa_tests : cfoa_$(CFOA_TESTS) ; +run cfoa/serialization_tests.cpp + : + : + : $(CPP11) multi + off # Boost.Serialization headers are not warning-free + msvc:/bigobj + gcc:on + gcc:space + clang:on + clang:space + /boost//serialization/off + : cfoa_serialization_tests ; + +alias cfoa_tests : + cfoa_$(CFOA_TESTS) + cfoa_serialization_tests ; diff --git a/test/cfoa/serialization_tests.cpp b/test/cfoa/serialization_tests.cpp new file mode 100644 index 00000000..ad762451 --- /dev/null +++ b/test/cfoa/serialization_tests.cpp @@ -0,0 +1,79 @@ +// Copyright (C) 2023 Joaquin M Lopez Munoz +// 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 "../objects/test.hpp" +#include "../helpers/random_values.hpp" + +#include +#include +#include +#include +#include +#include + +namespace { + + template + void serialization_tests( + Container*, ArchivePair*, test::random_generator generator) + { + using output_archive = typename ArchivePair::first_type ; + using input_archive = typename ArchivePair::second_type; + + BOOST_LIGHTWEIGHT_TEST_OSTREAM << "serialization_tests1\n"; + { + Container c; + + std::ostringstream oss; + { + output_archive oa(oss); + oa << boost::serialization::make_nvp("container", c); + } + + test::random_values values(100, generator); + Container c2(values.begin(), values.end()); + std::istringstream iss(oss.str()); + input_archive ia(iss); + ia >> boost::serialization::make_nvp("container", c2); + BOOST_TEST(c2.empty()); + } + + BOOST_LIGHTWEIGHT_TEST_OSTREAM << "serialization_tests2\n"; + { + test::random_values values(100, generator); + Container c(values.begin(), values.end()); + + std::ostringstream oss; + { + output_archive oa(oss); + oa << boost::serialization::make_nvp("container", c); + } + + Container c2; + std::istringstream iss(oss.str()); + input_archive ia(iss); + ia >> boost::serialization::make_nvp("container", c2); + BOOST_TEST(c == c2); + } + } + + using test::default_generator; + + std::pair< + boost::archive::text_oarchive, boost::archive::text_iarchive>* + text_archive; + std::pair< + boost::archive::xml_oarchive, boost::archive::xml_iarchive>* + xml_archive; + + boost::concurrent_flat_map< + test::object, test::object, test::hash, test::equal_to>* test_flat_map; + + UNORDERED_TEST(serialization_tests, + ((test_flat_map)) + ((text_archive)(xml_archive)) + ((default_generator))) +} + +RUN_TESTS()