1 /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 2 // test_recurrsion.cpp 3 4 // (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . 5 // Use, modification and distribution is subject to the Boost Software 6 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at 7 // http://www.boost.org/LICENSE_1_0.txt) 8 9 // should pass compilation and execution 10 11 #include <cstddef> // NULL 12 #include <cstdio> // remove 13 #include <fstream> 14 15 #include <boost/config.hpp> 16 #if defined(BOOST_NO_STDC_NAMESPACE) 17 namespace std{ 18 using ::remove; 19 } 20 #endif 21 22 #include "test_tools.hpp" 23 24 #include "J.hpp" 25 #include "A.ipp" 26 test_main(int,char * [])27int test_main( int /* argc */, char* /* argv */[] ) 28 { 29 const char * testfile = boost::archive::tmpnam(NULL); 30 BOOST_REQUIRE(NULL != testfile); 31 32 // test recursive structure 33 J j, j1; 34 j.j = &j; 35 36 { 37 test_ostream os(testfile, TEST_STREAM_FLAGS); 38 test_oarchive oa(os, TEST_ARCHIVE_FLAGS); 39 oa << BOOST_SERIALIZATION_NVP(j); 40 } 41 { 42 test_istream is(testfile, TEST_STREAM_FLAGS); 43 test_iarchive ia(is, TEST_ARCHIVE_FLAGS); 44 ia >> BOOST_SERIALIZATION_NVP(j1); 45 } 46 BOOST_CHECK(j == j1); 47 std::remove(testfile); 48 return EXIT_SUCCESS; 49 } 50 51 // EOF 52