lightweight_test_test.cpp 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. //
  2. // Test for lightweight_test.hpp
  3. //
  4. // Copyright (c) 2014 Peter Dimov
  5. //
  6. // Distributed under the Boost Software License, Version 1.0.
  7. // See accompanying file LICENSE_1_0.txt or copy at
  8. // http://www.boost.org/LICENSE_1_0.txt
  9. //
  10. #include <vector>
  11. #include <boost/detail/lightweight_test.hpp>
  12. struct X
  13. {
  14. };
  15. #if !defined( BOOST_NO_EXCEPTIONS )
  16. # define LWT_THROW( x ) throw x
  17. #else
  18. # define LWT_THROW( x ) ((void)(x))
  19. #endif
  20. void f( bool x )
  21. {
  22. if( x )
  23. {
  24. LWT_THROW( X() );
  25. }
  26. else
  27. {
  28. LWT_THROW( 5 );
  29. }
  30. }
  31. int main()
  32. {
  33. int x = 0;
  34. // BOOST_TEST
  35. BOOST_TEST( x == 0 );
  36. BOOST_TEST( ++x == 1 );
  37. BOOST_TEST( x++ == 1 );
  38. BOOST_TEST( x == 2? true: false );
  39. BOOST_TEST( x == 2? &x: 0 );
  40. // BOOST_TEST_NOT
  41. BOOST_TEST_NOT( x == 1 );
  42. BOOST_TEST_NOT( ++x == 2 );
  43. BOOST_TEST_NOT( x++ == 2 );
  44. BOOST_TEST_NOT( --x == 2 );
  45. BOOST_TEST_NOT( x-- == 2 );
  46. BOOST_TEST_NOT( x == 2? false: true );
  47. BOOST_TEST_NOT( x == 2? 0: &x );
  48. // BOOST_TEST_EQ
  49. BOOST_TEST_EQ( x, 2 );
  50. BOOST_TEST_EQ( ++x, 3 );
  51. BOOST_TEST_EQ( x++, 3 );
  52. int y = 4;
  53. BOOST_TEST_EQ( ++x, ++y );
  54. BOOST_TEST_EQ( x++, y++ );
  55. BOOST_TEST_CSTR_EQ("xabc"+1, "yabc"+1); // equal cstrings, different addresses
  56. BOOST_TEST_EQ( &y, &y );
  57. // BOOST_TEST_NE
  58. BOOST_TEST_NE( ++x, y );
  59. BOOST_TEST_NE( &x, &y );
  60. BOOST_TEST_NE("xabc"+1, "yabc"+1); // equal cstrings, different addresses
  61. BOOST_TEST_CSTR_NE("x", "y");
  62. // BOOST_TEST_ALL_EQ
  63. {
  64. std::vector<int> xarray;
  65. xarray.push_back(1);
  66. xarray.push_back(2);
  67. std::vector<int> yarray(xarray);
  68. BOOST_TEST_ALL_EQ(xarray.begin(), xarray.end(), yarray.begin(), yarray.end());
  69. }
  70. // BOOST_TEST_THROWS
  71. BOOST_TEST_THROWS( throw X(), X );
  72. BOOST_TEST_THROWS( throw 1, int );
  73. BOOST_TEST_THROWS( f(true), X );
  74. BOOST_TEST_THROWS( f(false), int );
  75. return boost::report_errors();
  76. }