comparisons_pass.cpp 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. //===----------------------------------------------------------------------===//
  2. //
  3. // The LLVM Compiler Infrastructure
  4. //
  5. // This file is dual licensed under the MIT and the University of Illinois Open
  6. // Source Licenses. See LICENSE.TXT for details.
  7. //
  8. //===----------------------------------------------------------------------===//
  9. // Adaptation to Boost of the libcxx
  10. // Copyright 2010 Vicente J. Botet Escriba
  11. // Distributed under the Boost Software License, Version 1.0.
  12. // See http://www.boost.org/LICENSE_1_0.txt
  13. #include <boost/chrono/chrono.hpp>
  14. #include <boost/detail/lightweight_test.hpp>
  15. #ifdef BOOST_NO_CXX11_CONSTEXPR
  16. #define BOOST_CONSTEXPR_ASSERT(C) BOOST_TEST(C)
  17. #else
  18. #include <boost/static_assert.hpp>
  19. #define BOOST_CONSTEXPR_ASSERT(C) BOOST_STATIC_ASSERT(C)
  20. #endif
  21. int main()
  22. {
  23. typedef boost::chrono::system_clock Clock;
  24. typedef boost::chrono::milliseconds Duration1;
  25. typedef boost::chrono::microseconds Duration2;
  26. typedef boost::chrono::time_point<Clock, Duration1> T1;
  27. typedef boost::chrono::time_point<Clock, Duration2> T2;
  28. {
  29. T1 t1(Duration1(3));
  30. T1 t2(Duration1(3));
  31. BOOST_TEST( (t1 == t2));
  32. BOOST_TEST(! (t1 != t2));
  33. }
  34. {
  35. BOOST_CONSTEXPR T1 t1(Duration1(3));
  36. BOOST_CONSTEXPR T1 t2(Duration1(3));
  37. BOOST_CONSTEXPR_ASSERT( (t1 == t2));
  38. BOOST_CONSTEXPR_ASSERT(! (t1 != t2));
  39. }
  40. {
  41. T1 t1(Duration1(3));
  42. T1 t2(Duration1(4));
  43. BOOST_TEST(! (t1 == t2));
  44. BOOST_TEST( (t1 != t2));
  45. }
  46. {
  47. BOOST_CONSTEXPR T1 t1(Duration1(3));
  48. BOOST_CONSTEXPR T1 t2(Duration1(4));
  49. BOOST_CONSTEXPR_ASSERT(! (t1 == t2));
  50. BOOST_CONSTEXPR_ASSERT( (t1 != t2));
  51. }
  52. {
  53. T1 t1(Duration1(3));
  54. T2 t2(Duration2(3000));
  55. BOOST_TEST( (t1 == t2));
  56. BOOST_TEST(! (t1 != t2));
  57. }
  58. {
  59. BOOST_CONSTEXPR T1 t1(Duration1(3));
  60. BOOST_CONSTEXPR T2 t2(Duration2(3000));
  61. BOOST_CONSTEXPR_ASSERT( (t1 == t2));
  62. BOOST_CONSTEXPR_ASSERT(! (t1 != t2));
  63. }
  64. {
  65. T1 t1(Duration1(3));
  66. T2 t2(Duration2(3001));
  67. BOOST_TEST(! (t1 == t2));
  68. BOOST_TEST( (t1 != t2));
  69. }
  70. {
  71. BOOST_CONSTEXPR T1 t1(Duration1(3));
  72. BOOST_CONSTEXPR T2 t2(Duration2(3001));
  73. BOOST_CONSTEXPR_ASSERT(! (t1 == t2));
  74. BOOST_CONSTEXPR_ASSERT( (t1 != t2));
  75. }
  76. {
  77. T1 t1(Duration1(3));
  78. T1 t2(Duration1(3));
  79. BOOST_TEST(! (t1 < t2));
  80. BOOST_TEST(! (t1 > t2));
  81. BOOST_TEST( (t1 <= t2));
  82. BOOST_TEST( (t1 >= t2));
  83. }
  84. {
  85. BOOST_CONSTEXPR T1 t1(Duration1(3));
  86. BOOST_CONSTEXPR T1 t2(Duration1(3));
  87. BOOST_CONSTEXPR_ASSERT(! (t1 < t2));
  88. BOOST_CONSTEXPR_ASSERT(! (t1 > t2));
  89. BOOST_CONSTEXPR_ASSERT( (t1 <= t2));
  90. BOOST_CONSTEXPR_ASSERT( (t1 >= t2));
  91. }
  92. {
  93. T1 t1(Duration1(3));
  94. T1 t2(Duration1(4));
  95. BOOST_TEST( (t1 < t2));
  96. BOOST_TEST(! (t1 > t2));
  97. BOOST_TEST( (t1 <= t2));
  98. BOOST_TEST(! (t1 >= t2));
  99. }
  100. {
  101. BOOST_CONSTEXPR T1 t1(Duration1(3));
  102. BOOST_CONSTEXPR T1 t2(Duration1(4));
  103. BOOST_CONSTEXPR_ASSERT( (t1 < t2));
  104. BOOST_CONSTEXPR_ASSERT(! (t1 > t2));
  105. BOOST_CONSTEXPR_ASSERT( (t1 <= t2));
  106. BOOST_CONSTEXPR_ASSERT(! (t1 >= t2));
  107. }
  108. {
  109. T1 t1(Duration1(3));
  110. T2 t2(Duration2(3000));
  111. BOOST_TEST(! (t1 < t2));
  112. BOOST_TEST(! (t1 > t2));
  113. BOOST_TEST( (t1 <= t2));
  114. BOOST_TEST( (t1 >= t2));
  115. }
  116. {
  117. BOOST_CONSTEXPR T1 t1(Duration1(3));
  118. BOOST_CONSTEXPR T2 t2(Duration2(3000));
  119. BOOST_CONSTEXPR_ASSERT(! (t1 < t2));
  120. BOOST_CONSTEXPR_ASSERT(! (t1 > t2));
  121. BOOST_CONSTEXPR_ASSERT( (t1 <= t2));
  122. BOOST_CONSTEXPR_ASSERT( (t1 >= t2));
  123. }
  124. {
  125. T1 t1(Duration1(3));
  126. T2 t2(Duration2(3001));
  127. BOOST_TEST( (t1 < t2));
  128. BOOST_TEST(! (t1 > t2));
  129. BOOST_TEST( (t1 <= t2));
  130. BOOST_TEST(! (t1 >= t2));
  131. }
  132. {
  133. BOOST_CONSTEXPR T1 t1(Duration1(3));
  134. BOOST_CONSTEXPR T2 t2(Duration2(3001));
  135. BOOST_CONSTEXPR_ASSERT( (t1 < t2));
  136. BOOST_CONSTEXPR_ASSERT(! (t1 > t2));
  137. BOOST_CONSTEXPR_ASSERT( (t1 <= t2));
  138. BOOST_CONSTEXPR_ASSERT(! (t1 >= t2));
  139. }
  140. return boost::report_errors();
  141. }