get_deleter_array_test.cpp 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. //
  2. // get_deleter_array_test.cpp
  3. //
  4. // Copyright (c) 2002, 2011 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. #include <boost/shared_array.hpp>
  11. #include <boost/detail/lightweight_test.hpp>
  12. struct deleter
  13. {
  14. int data;
  15. deleter(): data(0)
  16. {
  17. }
  18. void operator()(void *)
  19. {
  20. BOOST_TEST(data == 17041);
  21. }
  22. };
  23. struct deleter2
  24. {
  25. };
  26. struct X
  27. {
  28. };
  29. int main()
  30. {
  31. {
  32. boost::shared_array<X> p;
  33. BOOST_TEST(boost::get_deleter<void>(p) == 0);
  34. BOOST_TEST(boost::get_deleter<void const>(p) == 0);
  35. BOOST_TEST(boost::get_deleter<int>(p) == 0);
  36. BOOST_TEST(boost::get_deleter<int const>(p) == 0);
  37. BOOST_TEST(boost::get_deleter<X>(p) == 0);
  38. BOOST_TEST(boost::get_deleter<X const>(p) == 0);
  39. BOOST_TEST(boost::get_deleter<deleter>(p) == 0);
  40. BOOST_TEST(boost::get_deleter<deleter const>(p) == 0);
  41. BOOST_TEST(boost::get_deleter<deleter2>(p) == 0);
  42. BOOST_TEST(boost::get_deleter<deleter2 const>(p) == 0);
  43. }
  44. {
  45. boost::shared_array<X> p(new X[1]);
  46. BOOST_TEST(boost::get_deleter<void>(p) == 0);
  47. BOOST_TEST(boost::get_deleter<void const>(p) == 0);
  48. BOOST_TEST(boost::get_deleter<int>(p) == 0);
  49. BOOST_TEST(boost::get_deleter<int const>(p) == 0);
  50. BOOST_TEST(boost::get_deleter<X>(p) == 0);
  51. BOOST_TEST(boost::get_deleter<X const>(p) == 0);
  52. BOOST_TEST(boost::get_deleter<deleter>(p) == 0);
  53. BOOST_TEST(boost::get_deleter<deleter const>(p) == 0);
  54. BOOST_TEST(boost::get_deleter<deleter2>(p) == 0);
  55. BOOST_TEST(boost::get_deleter<deleter2 const>(p) == 0);
  56. }
  57. {
  58. X x[1];
  59. boost::shared_array<X> p(x, deleter());
  60. BOOST_TEST(boost::get_deleter<void>(p) == 0);
  61. BOOST_TEST(boost::get_deleter<void const>(p) == 0);
  62. BOOST_TEST(boost::get_deleter<int>(p) == 0);
  63. BOOST_TEST(boost::get_deleter<int const>(p) == 0);
  64. BOOST_TEST(boost::get_deleter<X>(p) == 0);
  65. BOOST_TEST(boost::get_deleter<X const>(p) == 0);
  66. BOOST_TEST(boost::get_deleter<deleter2>(p) == 0);
  67. BOOST_TEST(boost::get_deleter<deleter2 const>(p) == 0);
  68. deleter * q = boost::get_deleter<deleter>(p);
  69. BOOST_TEST(q != 0);
  70. BOOST_TEST(q->data == 0);
  71. q->data = 17041;
  72. deleter const * r = boost::get_deleter<deleter const>(p);
  73. BOOST_TEST(r == q);
  74. BOOST_TEST(r->data == 17041);
  75. }
  76. return boost::report_errors();
  77. }