1 /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
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)
9 // should pass compilation and execution
11 // invoke header for a custom archive test.
13 #include <cstddef> // NULL
16 #include <cstdio> // remove
17 #include <boost/config.hpp>
19 #if defined(BOOST_NO_STDC_NAMESPACE)
25 // for now, only test with simple text and polymorphic archive
26 #include "test_tools.hpp"
27 #include "text_archive.hpp"
29 #include <boost/archive/polymorphic_text_oarchive.hpp>
30 #include <boost/archive/polymorphic_text_iarchive.hpp>
35 // simple class with text archive compiled in dll
38 const char * testfile
= boost::archive::tmpnam(NULL
);
39 BOOST_REQUIRE(NULL
!= testfile
);
44 test_ostream
os(testfile
, TEST_STREAM_FLAGS
);
45 boost::archive::text_oarchive
oa(os
, TEST_ARCHIVE_FLAGS
);
46 oa
<< boost::serialization::make_nvp("a", a
);
49 test_istream
is(testfile
, TEST_STREAM_FLAGS
);
50 boost::archive::text_iarchive
ia(is
, TEST_ARCHIVE_FLAGS
);
51 ia
>> boost::serialization::make_nvp("a", a1
);
53 BOOST_CHECK_EQUAL(a
, a1
);
55 std::remove(testfile
);
58 // simple class with polymorphic archive compiled in dll
61 const char * testfile
= boost::archive::tmpnam(NULL
);
62 BOOST_REQUIRE(NULL
!= testfile
);
67 test_ostream
os(testfile
, TEST_STREAM_FLAGS
);
68 boost::archive::polymorphic_text_oarchive
oa(os
, TEST_ARCHIVE_FLAGS
);
69 boost::archive::polymorphic_oarchive
& poa(oa
);
70 poa
<< boost::serialization::make_nvp("a", a
);
73 test_istream
is(testfile
, TEST_STREAM_FLAGS
);
74 boost::archive::polymorphic_text_iarchive
ia(is
, TEST_ARCHIVE_FLAGS
);
75 boost::archive::polymorphic_iarchive
& pia(ia
);
76 pia
>> boost::serialization::make_nvp("a", a1
);
78 BOOST_CHECK_EQUAL(a
, a1
);
80 std::remove(testfile
);
83 // simple class pointer with text archive compiled in dll
86 const char * testfile
= boost::archive::tmpnam(NULL
);
87 BOOST_REQUIRE(NULL
!= testfile
);
92 test_ostream
os(testfile
, TEST_STREAM_FLAGS
);
93 boost::archive::text_oarchive
oa(os
, TEST_ARCHIVE_FLAGS
);
94 oa
<< boost::serialization::make_nvp("a", a
);
97 test_istream
is(testfile
, TEST_STREAM_FLAGS
);
98 boost::archive::text_iarchive
ia(is
, TEST_ARCHIVE_FLAGS
);
99 ia
>> boost::serialization::make_nvp("a", a1
);
101 BOOST_CHECK_EQUAL(*a
, *a1
);
103 std::remove(testfile
);
107 // simple class pointer with polymorphic archive compiled in dll
110 const char * testfile
= boost::archive::tmpnam(NULL
);
111 BOOST_REQUIRE(NULL
!= testfile
);
116 test_ostream
os(testfile
, TEST_STREAM_FLAGS
);
117 boost::archive::polymorphic_text_oarchive
oa(os
, TEST_ARCHIVE_FLAGS
);
118 boost::archive::polymorphic_oarchive
& poa(oa
);
119 poa
<< boost::serialization::make_nvp("a", a
);
122 test_istream
is(testfile
, TEST_STREAM_FLAGS
);
123 boost::archive::polymorphic_text_iarchive
ia(is
, TEST_ARCHIVE_FLAGS
);
124 boost::archive::polymorphic_iarchive
& pia(ia
);
125 pia
>> boost::serialization::make_nvp("a", a1
);
127 BOOST_CHECK_EQUAL(*a
, *a1
);
129 std::remove(testfile
);
135 // derived class with base text archive compiled in dll
138 const char * testfile
= boost::archive::tmpnam(NULL
);
139 BOOST_REQUIRE(NULL
!= testfile
);
144 test_ostream
os(testfile
, TEST_STREAM_FLAGS
);
145 boost::archive::text_oarchive
oa(os
, TEST_ARCHIVE_FLAGS
);
146 oa
<< boost::serialization::make_nvp("b", b
);
149 test_istream
is(testfile
, TEST_STREAM_FLAGS
);
150 boost::archive::text_iarchive
ia(is
, TEST_ARCHIVE_FLAGS
);
151 ia
>> boost::serialization::make_nvp("b", b1
);
153 BOOST_CHECK_EQUAL(b
, b1
);
155 std::remove(testfile
);
158 // derived class with base base compiled with polymorphic archive in dll
161 const char * testfile
= boost::archive::tmpnam(NULL
);
162 BOOST_REQUIRE(NULL
!= testfile
);
167 test_ostream
os(testfile
, TEST_STREAM_FLAGS
);
168 boost::archive::polymorphic_text_oarchive
oa(os
, TEST_ARCHIVE_FLAGS
);
169 boost::archive::polymorphic_oarchive
& poa(oa
);
170 poa
<< boost::serialization::make_nvp("b", b
);
173 test_istream
is(testfile
, TEST_STREAM_FLAGS
);
174 boost::archive::polymorphic_text_iarchive
ia(is
, TEST_ARCHIVE_FLAGS
);
175 boost::archive::polymorphic_iarchive
& pia(ia
);
176 pia
>> boost::serialization::make_nvp("b", b1
);
178 BOOST_CHECK_EQUAL(b
, b1
);
180 std::remove(testfile
);
183 // derived class pointer with base text archive compiled in dll
186 const char * testfile
= boost::archive::tmpnam(NULL
);
187 BOOST_REQUIRE(NULL
!= testfile
);
192 test_ostream
os(testfile
, TEST_STREAM_FLAGS
);
193 boost::archive::text_oarchive
oa(os
, TEST_ARCHIVE_FLAGS
);
194 oa
<< boost::serialization::make_nvp("b", b
);
197 test_istream
is(testfile
, TEST_STREAM_FLAGS
);
198 boost::archive::text_iarchive
ia(is
, TEST_ARCHIVE_FLAGS
);
199 ia
>> boost::serialization::make_nvp("b", b1
);
201 BOOST_CHECK_EQUAL(*b
, *b1
);
203 std::remove(testfile
);
207 // derived class pointer with base polymorphic archive compiled in dll
210 const char * testfile
= boost::archive::tmpnam(NULL
);
211 BOOST_REQUIRE(NULL
!= testfile
);
216 test_ostream
os(testfile
, TEST_STREAM_FLAGS
);
217 boost::archive::polymorphic_text_oarchive
oa(os
, TEST_ARCHIVE_FLAGS
);
218 boost::archive::polymorphic_oarchive
& poa(oa
);
219 poa
<< boost::serialization::make_nvp("b", b
);
222 test_istream
is(testfile
, TEST_STREAM_FLAGS
);
223 boost::archive::polymorphic_text_iarchive
ia(is
, TEST_ARCHIVE_FLAGS
);
224 boost::archive::polymorphic_iarchive
& pia(ia
);
225 pia
>> boost::serialization::make_nvp("b", b1
);
227 BOOST_CHECK_EQUAL(*b
, *b1
);
229 std::remove(testfile
);
235 test_main( int /* argc */, char* /* argv */[] )