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/core/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 |
113 |