1 // Copyright 2020 Peter Dimov 2 // Distributed under the Boost Software License, Version 1.0. 3 // https://www.boost.org/LICENSE_1_0.txt 4 5 #include <boost/smart_ptr/local_shared_ptr.hpp> 6 #include <boost/core/lightweight_test.hpp> 7 main()8int main() 9 { 10 { 11 boost::local_shared_ptr<int> p1( new int ); 12 boost::local_shared_ptr<int> p2( p1 ); 13 14 BOOST_TEST( p1.owner_equals( p2 ) ); 15 BOOST_TEST( p2.owner_equals( p1 ) ); 16 17 boost::local_shared_ptr<int> p3( new int ); 18 19 BOOST_TEST( !p1.owner_equals( p3 ) ); 20 BOOST_TEST( !p3.owner_equals( p1 ) ); 21 22 boost::local_shared_ptr<int> p4; 23 boost::local_shared_ptr<int> p5; 24 25 BOOST_TEST( p4.owner_equals( p5 ) ); 26 BOOST_TEST( p5.owner_equals( p4 ) ); 27 28 BOOST_TEST( !p4.owner_equals( p3 ) ); 29 BOOST_TEST( !p3.owner_equals( p4 ) ); 30 31 boost::local_shared_ptr<int> p6( static_cast<int*>(0) ); 32 33 BOOST_TEST( !p4.owner_equals( p6 ) ); 34 BOOST_TEST( !p6.owner_equals( p4 ) ); 35 36 boost::local_shared_ptr<void> p7( p1 ); 37 38 BOOST_TEST( p1.owner_equals( p7 ) ); 39 BOOST_TEST( p7.owner_equals( p1 ) ); 40 41 boost::local_shared_ptr<void> p8; 42 43 BOOST_TEST( !p1.owner_equals( p8 ) ); 44 BOOST_TEST( !p8.owner_equals( p1 ) ); 45 46 BOOST_TEST( p4.owner_equals( p8 ) ); 47 BOOST_TEST( p8.owner_equals( p4 ) ); 48 /* 49 boost::local_weak_ptr<int> q1( p1 ); 50 51 BOOST_TEST( p1.owner_equals( q1 ) ); 52 BOOST_TEST( q1.owner_equals( p1 ) ); 53 54 boost::local_weak_ptr<int> q2( p1 ); 55 56 BOOST_TEST( q1.owner_equals( q2 ) ); 57 BOOST_TEST( q2.owner_equals( q1 ) ); 58 59 boost::local_weak_ptr<int> q3( p3 ); 60 61 BOOST_TEST( !p1.owner_equals( q3 ) ); 62 BOOST_TEST( !q3.owner_equals( p1 ) ); 63 64 BOOST_TEST( !q1.owner_equals( q3 ) ); 65 BOOST_TEST( !q3.owner_equals( q1 ) ); 66 67 boost::local_weak_ptr<int> q4; 68 69 BOOST_TEST( p4.owner_equals( q4 ) ); 70 BOOST_TEST( q4.owner_equals( p4 ) ); 71 72 BOOST_TEST( !q1.owner_equals( q4 ) ); 73 BOOST_TEST( !q4.owner_equals( q1 ) ); 74 75 boost::local_weak_ptr<void> q5; 76 77 BOOST_TEST( q4.owner_equals( q5 ) ); 78 BOOST_TEST( q5.owner_equals( q4 ) ); 79 80 boost::local_weak_ptr<void> q7( p7 ); 81 82 BOOST_TEST( p1.owner_equals( q7 ) ); 83 BOOST_TEST( q7.owner_equals( p1 ) ); 84 85 BOOST_TEST( q1.owner_equals( q7 ) ); 86 BOOST_TEST( q7.owner_equals( q1 ) ); 87 88 p1.reset(); 89 p2.reset(); 90 p3.reset(); 91 p7.reset(); 92 93 BOOST_TEST( q1.expired() ); 94 BOOST_TEST( q2.expired() ); 95 BOOST_TEST( q3.expired() ); 96 BOOST_TEST( q7.expired() ); 97 98 BOOST_TEST( q1.owner_equals( q2 ) ); 99 BOOST_TEST( q2.owner_equals( q1 ) ); 100 101 BOOST_TEST( q1.owner_equals( q7 ) ); 102 BOOST_TEST( q7.owner_equals( q1 ) ); 103 104 BOOST_TEST( !q1.owner_equals( q3 ) ); 105 BOOST_TEST( !q3.owner_equals( q1 ) ); 106 107 BOOST_TEST( !q1.owner_equals( q4 ) ); 108 BOOST_TEST( !q4.owner_equals( q1 ) ); 109 */ 110 } 111 112 return boost::report_errors(); 113 } 114