]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/serialization/test/test_native_array.cpp
4bf3c87411ae5dda42cf5e5a2981c5f29f0274be
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
13 #include <boost/config.hpp>
16 #include <algorithm> // equal
17 #include <cstdio> // remove
18 #if defined(BOOST_NO_STDC_NAMESPACE)
23 #include "test_tools.hpp"
24 #include <boost/core/no_exceptions_support.hpp>
25 #include <boost/archive/archive_exception.hpp>
26 #include <boost/array.hpp>
32 int test_native_array(){
33 const char * testfile
= boost::archive::tmpnam(NULL
);
34 BOOST_REQUIRE(NULL
!= testfile
);
36 // test array of objects
37 const T a_array
[10]={T(),T(),T(),T(),T(),T(),T(),T(),T(),T()};
38 const T b_array
[2][3]={{T(),T(),T()},{T(),T(),T()}};
40 test_ostream
os(testfile
, TEST_STREAM_FLAGS
);
42 test_oarchive
oa(os
, TEST_ARCHIVE_FLAGS
);
43 oa
<< boost::serialization::make_nvp("a_array", a_array
);
44 oa
<< boost::serialization::make_nvp("b_array", b_array
);
51 test_istream
is(testfile
, TEST_STREAM_FLAGS
);
53 test_iarchive
ia(is
, TEST_ARCHIVE_FLAGS
);
54 ia
>> boost::serialization::make_nvp("a_array", a_array1
);
55 ia
>> boost::serialization::make_nvp("b_array", b_array1
);
58 BOOST_CHECK(std::equal(& a_array
[0], & a_array
[10], & a_array1
[0]));
59 BOOST_CHECK(b_array
[0][0] == b_array1
[0][0]);
60 BOOST_CHECK(b_array
[1][0] == b_array1
[1][0]);
65 test_istream
is(testfile
, TEST_STREAM_FLAGS
);
67 test_iarchive
ia(is
, TEST_ARCHIVE_FLAGS
);
68 bool exception_invoked
= false;
70 ia
>> boost::serialization::make_nvp("a_array", a_array1
);
71 ia
>> boost::serialization::make_nvp("b_array", b_array1
);
73 BOOST_CATCH (boost::archive::archive_exception ae
){
75 boost::archive::archive_exception::array_size_too_short
78 exception_invoked
= true;
81 BOOST_CHECK(exception_invoked
);
85 std::remove(testfile
);
89 int test_main( int /* argc */, char* /* argv */[] ){
93 res
= test_native_array
<A
>();
94 if (res
!= EXIT_SUCCESS
)
96 // test an int array for which optimized versions should be available
97 res
= test_native_array
<int>();
98 if (res
!= EXIT_SUCCESS
)