Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r53079 - trunk/libs/serialization/test
From: ramey_at_[hidden]
Date: 2009-05-18 02:27:17


Author: ramey
Date: 2009-05-18 02:27:16 EDT (Mon, 18 May 2009)
New Revision: 53079
URL: http://svn.boost.org/trac/boost/changeset/53079

Log:
add test for protected inheritance
Added:
   trunk/libs/serialization/test/test_private_base.cpp (contents, props changed)
Text files modified:
   trunk/libs/serialization/test/test_simple_class.cpp | 2 +-
   1 files changed, 1 insertions(+), 1 deletions(-)

Added: trunk/libs/serialization/test/test_private_base.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/serialization/test/test_private_base.cpp 2009-05-18 02:27:16 EDT (Mon, 18 May 2009)
@@ -0,0 +1,99 @@
+/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
+// test_private_base.cpp
+
+// (C) Copyright 2009 Eric Moyer - 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
+
+// invoke header for a custom archive test.
+
+#include <fstream>
+#include <boost/config.hpp>
+#if defined(BOOST_NO_STDC_NAMESPACE)
+namespace std{
+ using ::remove;
+}
+#endif
+
+#include <boost/serialization/access.hpp>
+#include <boost/serialization/base_object.hpp>
+#include <boost/serialization/export.hpp>
+
+#include "test_tools.hpp"
+
+class Base {
+ friend class boost::serialization::access;
+ int m_i;
+ template<class Archive>
+ void serialize(Archive & ar, const unsigned int version){
+ ar & m_i;
+ }
+protected:
+ bool operator==(const Base &rhs) const {
+ return m_i == rhs.m_i;
+ }
+ Base(int i = 0) :
+ m_i(i)
+ {}
+ virtual ~Base();
+};
+
+class Derived : public Base {
+ friend class boost::serialization::access;
+private:
+ template<class Archive>
+ void serialize(Archive & ar, const unsigned int version){
+ ar & boost::serialization::base_object<Base>(*this);
+ }
+public:
+ bool operator==(const Derived &rhs) const {
+ return Base::operator==(rhs);
+ }
+ Derived(int i = 0) :
+ Base(i)
+ {}
+};
+
+BOOST_CLASS_EXPORT(Derived)
+
+int
+test_main( int /* argc */, char* /* argv */[] )
+{
+ const char * testfile = boost::archive::tmpnam(NULL);
+ BOOST_REQUIRE(NULL != testfile);
+
+ Derived a(1), a1(2);
+ {
+ test_ostream os(testfile, TEST_STREAM_FLAGS);
+ test_oarchive oa(os, TEST_ARCHIVE_FLAGS);
+ oa << boost::serialization::make_nvp("a", a);
+ }
+ {
+ test_istream is(testfile, TEST_STREAM_FLAGS);
+ test_iarchive ia(is, TEST_ARCHIVE_FLAGS);
+ ia >> boost::serialization::make_nvp("a", a1);
+ }
+ BOOST_CHECK_EQUAL(a, a1);
+ std::remove(testfile);
+
+ Base *ta = new Derived(1);
+ Base *ta1 = NULL;
+
+ {
+ test_ostream os(testfile, TEST_STREAM_FLAGS);
+ test_oarchive oa(os, TEST_ARCHIVE_FLAGS);
+ oa << boost::serialization::make_nvp("ta", ta);
+ }
+ {
+ test_istream is(testfile, TEST_STREAM_FLAGS);
+ test_iarchive ia(is, TEST_ARCHIVE_FLAGS);
+ ia >> boost::serialization::make_nvp("ta", ta1);
+ }
+ BOOST_CHECK(ta != ta1);
+ BOOST_CHECK(*static_cast<Derived *>(ta) == *static_cast<Derived *>(ta1));
+ std::remove(testfile);
+ return 0;
+}

Modified: trunk/libs/serialization/test/test_simple_class.cpp
==============================================================================
--- trunk/libs/serialization/test/test_simple_class.cpp (original)
+++ trunk/libs/serialization/test/test_simple_class.cpp 2009-05-18 02:27:16 EDT (Mon, 18 May 2009)
@@ -46,5 +46,5 @@
     }
     BOOST_CHECK_EQUAL(a, a1);
     std::remove(testfile);
- return (a == a1) ? EXIT_SUCCESS : EXIT_SUCCESS;
+ return 0;
 }


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk