stdcpp/tsrc/Boost_test/smart_ptr/src/get_deleter_test.cpp
changeset 0 e4d67989cc36
equal deleted inserted replaced
-1:000000000000 0:e4d67989cc36
       
     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 }