|
1 // |
|
2 // get_deleter_test.cpp |
|
3 // |
|
4 // Copyright (c) 2002 Peter Dimov |
|
5 // |
|
6 // Distributed under the Boost Software License, Version 1.0. (See |
|
7 // accompanying file LICENSE_1_0.txt or copy at |
|
8 // http://www.boost.org/LICENSE_1_0.txt) |
|
9 // |
|
10 /* |
|
11 * © Portions copyright (c) 2006-2007 Nokia Corporation. All rights reserved. |
|
12 */ |
|
13 |
|
14 #include <boost/shared_ptr.hpp> |
|
15 #include <boost/detail/lightweight_test.hpp> |
|
16 |
|
17 #ifdef __SYMBIAN32__ |
|
18 #include "std_log_result.h" |
|
19 #define LOG_FILENAME_LINE __FILE__, __LINE__ |
|
20 #endif |
|
21 |
|
22 struct deleter |
|
23 { |
|
24 int data; |
|
25 |
|
26 deleter(): data(0) |
|
27 { |
|
28 } |
|
29 |
|
30 void operator()(void *) |
|
31 { |
|
32 BOOST_TEST(data == 17041); |
|
33 } |
|
34 }; |
|
35 |
|
36 struct deleter2 |
|
37 { |
|
38 }; |
|
39 |
|
40 struct X |
|
41 { |
|
42 }; |
|
43 |
|
44 int main() |
|
45 { |
|
46 std_log(LOG_FILENAME_LINE,"[Test Case for get_deleter_test]"); |
|
47 { |
|
48 boost::shared_ptr<X> p; |
|
49 |
|
50 BOOST_TEST(boost::get_deleter<void>(p) == 0); |
|
51 BOOST_TEST(boost::get_deleter<void const>(p) == 0); |
|
52 BOOST_TEST(boost::get_deleter<int>(p) == 0); |
|
53 BOOST_TEST(boost::get_deleter<int const>(p) == 0); |
|
54 BOOST_TEST(boost::get_deleter<X>(p) == 0); |
|
55 BOOST_TEST(boost::get_deleter<X const>(p) == 0); |
|
56 BOOST_TEST(boost::get_deleter<deleter>(p) == 0); |
|
57 BOOST_TEST(boost::get_deleter<deleter const>(p) == 0); |
|
58 BOOST_TEST(boost::get_deleter<deleter2>(p) == 0); |
|
59 BOOST_TEST(boost::get_deleter<deleter2 const>(p) == 0); |
|
60 } |
|
61 |
|
62 { |
|
63 boost::shared_ptr<X> p(new X); |
|
64 |
|
65 BOOST_TEST(boost::get_deleter<void>(p) == 0); |
|
66 BOOST_TEST(boost::get_deleter<void const>(p) == 0); |
|
67 BOOST_TEST(boost::get_deleter<int>(p) == 0); |
|
68 BOOST_TEST(boost::get_deleter<int const>(p) == 0); |
|
69 BOOST_TEST(boost::get_deleter<X>(p) == 0); |
|
70 BOOST_TEST(boost::get_deleter<X const>(p) == 0); |
|
71 BOOST_TEST(boost::get_deleter<deleter>(p) == 0); |
|
72 BOOST_TEST(boost::get_deleter<deleter const>(p) == 0); |
|
73 BOOST_TEST(boost::get_deleter<deleter2>(p) == 0); |
|
74 BOOST_TEST(boost::get_deleter<deleter2 const>(p) == 0); |
|
75 } |
|
76 |
|
77 { |
|
78 X x; |
|
79 boost::shared_ptr<X> p(&x, deleter()); |
|
80 |
|
81 BOOST_TEST(boost::get_deleter<void>(p) == 0); |
|
82 BOOST_TEST(boost::get_deleter<void const>(p) == 0); |
|
83 BOOST_TEST(boost::get_deleter<int>(p) == 0); |
|
84 BOOST_TEST(boost::get_deleter<int const>(p) == 0); |
|
85 BOOST_TEST(boost::get_deleter<X>(p) == 0); |
|
86 BOOST_TEST(boost::get_deleter<X const>(p) == 0); |
|
87 BOOST_TEST(boost::get_deleter<deleter2>(p) == 0); |
|
88 BOOST_TEST(boost::get_deleter<deleter2 const>(p) == 0); |
|
89 |
|
90 deleter * q = boost::get_deleter<deleter>(p); |
|
91 |
|
92 BOOST_TEST(q != 0); |
|
93 BOOST_TEST(q->data == 0); |
|
94 |
|
95 q->data = 17041; |
|
96 |
|
97 deleter const * r = boost::get_deleter<deleter const>(p); |
|
98 |
|
99 BOOST_TEST(r == q); |
|
100 BOOST_TEST(r->data == 17041); |
|
101 } |
|
102 |
|
103 #ifdef __SYMBIAN32__ |
|
104 int failures = boost::report_errors(); |
|
105 if(failures) |
|
106 { |
|
107 std_log(LOG_FILENAME_LINE,"Result : Failed"); |
|
108 assert_failed = true; |
|
109 } |
|
110 else |
|
111 { |
|
112 std_log(LOG_FILENAME_LINE,"Result : Passed"); |
|
113 } |
|
114 std_log(LOG_FILENAME_LINE,"[End Test Case ]"); |
|
115 #endif |
|
116 testResultXml("get_deleter_test"); |
|
117 close_log_file(); |
|
118 return failures; |
|
119 } |