]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/smart_ptr/test/sa_nullptr_test.cpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / smart_ptr / test / sa_nullptr_test.cpp
1 //
2 // shared_array nullptr test
3 //
4 // Copyright 2012, 2013 Peter Dimov
5 //
6 // Distributed under the Boost Software License, Version 1.0.
7 // See accompanying file LICENSE_1_0.txt or copy at
8 // http://www.boost.org/LICENSE_1_0.txt
9 //
10
11 #include <boost/shared_array.hpp>
12 #include <boost/detail/lightweight_test.hpp>
13 #include <cstddef>
14 #include <memory>
15
16 #if !defined( BOOST_NO_CXX11_NULLPTR )
17
18 struct X
19 {
20 static int instances;
21
22 X()
23 {
24 ++instances;
25 }
26
27 ~X()
28 {
29 --instances;
30 }
31
32 private:
33
34 X( X const & );
35 X & operator=( X const & );
36 };
37
38 int X::instances = 0;
39
40 int main()
41 {
42 {
43 boost::shared_array<int> p( nullptr );
44
45 BOOST_TEST( p.get() == 0 );
46 BOOST_TEST( p.use_count() == 0 );
47
48 BOOST_TEST( p == nullptr );
49 BOOST_TEST( nullptr == p );
50 BOOST_TEST( !( p != nullptr ) );
51 BOOST_TEST( !( nullptr != p ) );
52 }
53
54 {
55 boost::shared_array<int> p( new int[ 1 ] );
56
57 BOOST_TEST( p.get() != 0 );
58 BOOST_TEST( p.use_count() == 1 );
59
60 BOOST_TEST( p != nullptr );
61 BOOST_TEST( nullptr != p );
62 BOOST_TEST( !( p == nullptr ) );
63 BOOST_TEST( !( nullptr == p ) );
64
65 p = nullptr;
66
67 BOOST_TEST( p.get() == 0 );
68 BOOST_TEST( p.use_count() == 0 );
69
70 BOOST_TEST( p == nullptr );
71 BOOST_TEST( nullptr == p );
72 BOOST_TEST( !( p != nullptr ) );
73 BOOST_TEST( !( nullptr != p ) );
74 }
75
76 {
77 BOOST_TEST( X::instances == 0 );
78
79 boost::shared_array<X> p( new X[ 2 ] );
80 BOOST_TEST( X::instances == 2 );
81
82 BOOST_TEST( p.get() != 0 );
83 BOOST_TEST( p.use_count() == 1 );
84
85 BOOST_TEST( p != nullptr );
86 BOOST_TEST( nullptr != p );
87 BOOST_TEST( !( p == nullptr ) );
88 BOOST_TEST( !( nullptr == p ) );
89
90 p = nullptr;
91 BOOST_TEST( X::instances == 0 );
92
93 BOOST_TEST( p.get() == 0 );
94 BOOST_TEST( p.use_count() == 0 );
95
96 BOOST_TEST( p == nullptr );
97 BOOST_TEST( nullptr == p );
98 BOOST_TEST( !( p != nullptr ) );
99 BOOST_TEST( !( nullptr != p ) );
100 }
101
102 return boost::report_errors();
103 }
104
105 #else
106
107 int main()
108 {
109 return 0;
110 }
111
112 #endif