1 // Copyright 2011, 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/functional/hash.hpp>
7 #include <boost/core/lightweight_test.hpp>
8 
main()9 int main()
10 {
11     {
12         boost::hash< boost::local_shared_ptr<int> > hasher;
13 
14         boost::local_shared_ptr<int> p1, p2( p1 ), p3( new int ), p4( p3 ), p5( new int );
15 
16         BOOST_TEST_EQ( p1, p2 );
17         BOOST_TEST_EQ( hasher( p1 ), hasher( p2 ) );
18 
19         BOOST_TEST_NE( p1, p3 );
20         BOOST_TEST_NE( hasher( p1 ), hasher( p3 ) );
21 
22         BOOST_TEST_EQ( p3, p4 );
23         BOOST_TEST_EQ( hasher( p3 ), hasher( p4 ) );
24 
25         BOOST_TEST_NE( p3, p5 );
26         BOOST_TEST_NE( hasher( p3 ), hasher( p5 ) );
27     }
28 
29     {
30         boost::hash< boost::local_shared_ptr<int[]> > hasher;
31 
32         boost::local_shared_ptr<int[]> p1, p2( p1 ), p3( new int[1] ), p4( p3 ), p5( new int[1] );
33 
34         BOOST_TEST_EQ( p1, p2 );
35         BOOST_TEST_EQ( hasher( p1 ), hasher( p2 ) );
36 
37         BOOST_TEST_NE( p1, p3 );
38         BOOST_TEST_NE( hasher( p1 ), hasher( p3 ) );
39 
40         BOOST_TEST_EQ( p3, p4 );
41         BOOST_TEST_EQ( hasher( p3 ), hasher( p4 ) );
42 
43         BOOST_TEST_NE( p3, p5 );
44         BOOST_TEST_NE( hasher( p3 ), hasher( p5 ) );
45     }
46 
47     {
48         boost::hash< boost::local_shared_ptr<int[1]> > hasher;
49 
50         boost::local_shared_ptr<int[1]> p1, p2( p1 ), p3( new int[1] ), p4( p3 ), p5( new int[1] );
51 
52         BOOST_TEST_EQ( p1, p2 );
53         BOOST_TEST_EQ( hasher( p1 ), hasher( p2 ) );
54 
55         BOOST_TEST_NE( p1, p3 );
56         BOOST_TEST_NE( hasher( p1 ), hasher( p3 ) );
57 
58         BOOST_TEST_EQ( p3, p4 );
59         BOOST_TEST_EQ( hasher( p3 ), hasher( p4 ) );
60 
61         BOOST_TEST_NE( p3, p5 );
62         BOOST_TEST_NE( hasher( p3 ), hasher( p5 ) );
63     }
64 
65     return boost::report_errors();
66 }
67