12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
- // test_list.cpp
- // (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
- // Use, modification and distribution is subject to 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)
- // should pass compilation and execution
- #include <cstddef>
- #include <fstream>
- #include <boost/config.hpp>
- #include <cstdio> // remove
- #if defined(BOOST_NO_STDC_NAMESPACE)
- namespace std{
- using ::remove;
- }
- #endif
- #include <boost/type_traits/is_pointer.hpp>
- #include <boost/static_assert.hpp>
- #include <boost/checked_delete.hpp>
- #include <boost/archive/archive_exception.hpp>
- #include "test_tools.hpp"
- #include <boost/serialization/nvp.hpp>
- #include "A.hpp"
- #include "A.ipp"
- template<class T>
- struct ptr_equal_to {
- BOOST_STATIC_ASSERT(::boost::is_pointer< T >::value);
- bool operator()(T const _Left, T const _Right) const
- {
- if(NULL == _Left && NULL == _Right)
- return true;
- if(typeid(*_Left) != typeid(*_Right))
- return false;
- return *_Left == *_Right;
- }
- };
- #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);
- }
- int test_main( int /* argc */, char* /* argv */[] )
- {
- test_forward_list();
-
- return EXIT_SUCCESS;
- }
- // EOF
|