#include "A.ipp"
template<class T>
-struct ptr_equal_to : public std::binary_function<T, T, bool>
-{
+struct ptr_equal_to {
BOOST_STATIC_ASSERT(::boost::is_pointer< T >::value);
bool operator()(T const _Left, T const _Right) const
{
std::remove(testfile);
}
-#ifdef BOOST_HAS_SLIST
-#include <boost/serialization/slist.hpp>
-void test_slist(){
- const char * testfile = boost::archive::tmpnam(NULL);
- BOOST_REQUIRE(NULL != testfile);
-
- std::list<A *> aslist;
- {
- test_ostream os(testfile, TEST_STREAM_FLAGS);
- test_oarchive oa(os, TEST_ARCHIVE_FLAGS);
- aslist.push_back(new A);
- aslist.push_back(new A);
- oa << boost::serialization::make_nvp("aslist", aslist);
- }
- std::list<A *> aslist1;
- {
- test_istream is(testfile, TEST_STREAM_FLAGS);
- test_iarchive ia(is, TEST_ARCHIVE_FLAGS);
- ia >> boost::serialization::make_nvp("aslist", aslist1);
- BOOST_CHECK(aslist.size() == aslist1.size() &&
- std::equal(aslist.begin(),aslist.end(),aslist1.begin(),ptr_equal_to<A *>())
- );
- }
- std::for_each(
- aslist.begin(),
- aslist.end(),
- boost::checked_deleter<A>()
- );
- std::for_each(
- aslist1.begin(),
- aslist1.end(),
- boost::checked_deleter<A>()
- );
- std::remove(testfile);
-}
-#endif
-
-#ifndef BOOST_NO_CXX11_HDR_FORWARD_LIST
-#include <boost/serialization/forward_list.hpp>
-void test_forward_list(){
- const char * testfile = boost::archive::tmpnam(NULL);
- BOOST_REQUIRE(NULL != testfile);
-
- std::forward_list<A *> aslist;
- {
- test_ostream os(testfile, TEST_STREAM_FLAGS);
- test_oarchive oa(os, TEST_ARCHIVE_FLAGS);
- aslist.push_front(new A);
- aslist.push_front(new A);
- oa << boost::serialization::make_nvp("aslist", aslist);
- }
- std::forward_list<A *> aslist1;
- {
- test_istream is(testfile, TEST_STREAM_FLAGS);
- test_iarchive ia(is, TEST_ARCHIVE_FLAGS);
- ia >> boost::serialization::make_nvp("aslist", aslist1);
- BOOST_CHECK(
- std::equal(aslist.begin(),aslist.end(),aslist1.begin(),ptr_equal_to<A *>())
- );
- }
- std::for_each(
- aslist.begin(),
- aslist.end(),
- boost::checked_deleter<A>()
- );
- std::for_each(
- aslist1.begin(),
- aslist1.end(),
- boost::checked_deleter<A>()
- );
- std::remove(testfile);
-}
-#endif
-
int test_main( int /* argc */, char* /* argv */[] )
{
test_list();
-
- #ifdef BOOST_HAS_SLIST
- test_slist();
- #endif
-
- #ifndef BOOST_NO_CXX11_HDR_FORWARD_LIST
- test_forward_list();
- #endif
-
return EXIT_SUCCESS;
}