]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/smart_ptr/test/shared_ptr_alias_test.cpp
1 #include <boost/config.hpp>
3 // shared_ptr_alias_test.cpp
5 // Copyright (c) 2007 Peter Dimov
7 // Distributed under the Boost Software License, Version 1.0. (See
8 // accompanying file LICENSE_1_0.txt or copy at
9 // http://www.boost.org/LICENSE_1_0.txt)
12 #include <boost/detail/lightweight_test.hpp>
13 #include <boost/shared_ptr.hpp>
25 explicit X( int v
): v_( v
)
39 boost::shared_ptr
< int > p
;
40 boost::shared_ptr
< int > p2( p
, &m
);
42 BOOST_TEST( p2
.get() == &m
);
43 BOOST_TEST( p2
? true: false );
45 BOOST_TEST( p2
.use_count() == p
.use_count() );
46 BOOST_TEST( !( p
< p2
) && !( p2
< p
) );
50 BOOST_TEST( p2
.get() == 0 );
51 BOOST_TEST( p2
? false: true );
53 BOOST_TEST( p2
.use_count() == p
.use_count() );
54 BOOST_TEST( !( p
< p2
) && !( p2
< p
) );
59 boost::shared_ptr
< int > p( new int );
60 boost::shared_ptr
< int const > p2( p
, &m
);
62 BOOST_TEST( p2
.get() == &m
);
63 BOOST_TEST( p2
? true: false );
65 BOOST_TEST( p2
.use_count() == p
.use_count() );
66 BOOST_TEST( !( p
< p2
) && !( p2
< p
) );
68 boost::shared_ptr
< int volatile > p3
;
71 BOOST_TEST( p2
.get() == 0 );
72 BOOST_TEST( p2
? false: true );
74 BOOST_TEST( p2
.use_count() == p3
.use_count() );
75 BOOST_TEST( !( p3
< p2
) && !( p2
< p3
) );
79 boost::shared_ptr
< int > p( new int );
80 boost::shared_ptr
< void const > p2( p
, 0 );
82 BOOST_TEST( p2
.get() == 0 );
83 BOOST_TEST( p2
? false: true );
85 BOOST_TEST( p2
.use_count() == p
.use_count() );
86 BOOST_TEST( !( p
< p2
) && !( p2
< p
) );
89 boost::shared_ptr
< void volatile > p3
;
93 BOOST_TEST( p2
.get() == &m
);
94 BOOST_TEST( p2
? true: false );
96 BOOST_TEST( p2
.use_count() == p3
.use_count() );
97 BOOST_TEST( !( p3
< p2
) && !( p2
< p3
) );
101 boost::shared_ptr
< incomplete
> p
;
102 boost::shared_ptr
< incomplete
> p2( p
, 0 );
104 BOOST_TEST( p2
.get() == 0 );
105 BOOST_TEST( p2
? false: true );
107 BOOST_TEST( p2
.use_count() == p
.use_count() );
108 BOOST_TEST( !( p
< p2
) && !( p2
< p
) );
112 BOOST_TEST( p2
.get() == 0 );
113 BOOST_TEST( p2
? false: true );
115 BOOST_TEST( p2
.use_count() == p
.use_count() );
116 BOOST_TEST( !( p
< p2
) && !( p2
< p
) );
120 boost::shared_ptr
< X
> p( new X( 5 ) );
121 boost::shared_ptr
< int const > p2( p
, &p
->v_
);
123 BOOST_TEST( p2
.get() == &p
->v_
);
124 BOOST_TEST( p2
? true: false );
126 BOOST_TEST( p2
.use_count() == p
.use_count() );
127 BOOST_TEST( !( p
< p2
) && !( p2
< p
) );
130 BOOST_TEST( *p2
== 5 );
132 boost::shared_ptr
< X
const > p3( new X( 8 ) );
133 p2
.reset( p3
, &p3
->v_
);
135 BOOST_TEST( p2
.get() == &p3
->v_
);
136 BOOST_TEST( p2
? true: false );
138 BOOST_TEST( p2
.use_count() == p3
.use_count() );
139 BOOST_TEST( !( p3
< p2
) && !( p2
< p3
) );
142 BOOST_TEST( *p2
== 8 );
145 return boost::report_errors();