cmp.cpp 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. /* Boost test/cmp.cpp
  2. * test standard comparison functions
  3. *
  4. * Copyright 2002-2003 Guillaume Melquiond
  5. *
  6. * Distributed under the Boost Software License, Version 1.0.
  7. * (See accompanying file LICENSE_1_0.txt or
  8. * copy at http://www.boost.org/LICENSE_1_0.txt)
  9. */
  10. #include "cmp_header.hpp"
  11. // comparisons between [1,2] and [3,4]
  12. static void test_12_34() {
  13. const I a(1,2), b(3,4);
  14. BOOST_CHECK(a < b);
  15. BOOST_CHECK(a <= b);
  16. BOOST_CHECK(!(a > b));
  17. BOOST_CHECK(!(a >= b));
  18. BOOST_CHECK(b > a);
  19. BOOST_CHECK(b >= a);
  20. BOOST_CHECK(!(b < a));
  21. BOOST_CHECK(!(b <= a));
  22. BOOST_CHECK(!(a == b));
  23. BOOST_CHECK(a != b);
  24. # ifdef __BORLANDC__
  25. ::detail::ignore_unused_variable_warning(a);
  26. ::detail::ignore_unused_variable_warning(b);
  27. # endif
  28. }
  29. // comparisons between [1,3] and [2,4]
  30. static void test_13_24() {
  31. const I a(1,3), b(2,4);
  32. BOOST_C_EXN(a < b);
  33. BOOST_C_EXN(a <= b);
  34. BOOST_C_EXN(a > b);
  35. BOOST_C_EXN(a >= b);
  36. BOOST_C_EXN(b < a);
  37. BOOST_C_EXN(b <= a);
  38. BOOST_C_EXN(b > a);
  39. BOOST_C_EXN(b >= a);
  40. BOOST_C_EXN(a == b);
  41. BOOST_C_EXN(a != b);
  42. # ifdef __BORLANDC__
  43. ::detail::ignore_unused_variable_warning(a);
  44. ::detail::ignore_unused_variable_warning(b);
  45. # endif
  46. }
  47. // comparisons between [1,2] and [2,3]
  48. static void test_12_23() {
  49. const I a(1,2), b(2,3);
  50. BOOST_C_EXN(a < b);
  51. BOOST_CHECK(a <= b);
  52. BOOST_CHECK(!(a > b));
  53. BOOST_C_EXN(a >= b);
  54. BOOST_CHECK(!(b < a));
  55. BOOST_C_EXN(b <= a);
  56. BOOST_C_EXN(b > a);
  57. BOOST_CHECK(b >= a);
  58. BOOST_C_EXN(a == b);
  59. BOOST_C_EXN(a != b);
  60. # ifdef __BORLANDC__
  61. ::detail::ignore_unused_variable_warning(a);
  62. ::detail::ignore_unused_variable_warning(b);
  63. # endif
  64. }
  65. // comparisons between [1,2] and 0
  66. static void test_12_0() {
  67. const I a(1,2);
  68. const int b = 0;
  69. BOOST_CHECK(!(a < b));
  70. BOOST_CHECK(!(a <= b));
  71. BOOST_CHECK(a > b);
  72. BOOST_CHECK(a >= b);
  73. BOOST_CHECK(!(a == b));
  74. BOOST_CHECK(a != b);
  75. # ifdef __BORLANDC__
  76. ::detail::ignore_unused_variable_warning(a);
  77. ::detail::ignore_unused_variable_warning(b);
  78. # endif
  79. }
  80. // comparisons between [1,2] and 1
  81. static void test_12_1() {
  82. const I a(1,2);
  83. const int b = 1;
  84. BOOST_CHECK(!(a < b));
  85. BOOST_C_EXN(a <= b);
  86. BOOST_C_EXN(a > b);
  87. BOOST_CHECK(a >= b);
  88. BOOST_C_EXN(a == b);
  89. BOOST_C_EXN(a != b);
  90. # ifdef __BORLANDC__
  91. ::detail::ignore_unused_variable_warning(a);
  92. ::detail::ignore_unused_variable_warning(b);
  93. # endif
  94. }
  95. // comparisons between [1,2] and 2
  96. static void test_12_2() {
  97. const I a(1,2);
  98. const int b = 2;
  99. BOOST_C_EXN(a < b);
  100. BOOST_CHECK(a <= b);
  101. BOOST_CHECK(!(a > b));
  102. BOOST_C_EXN(a >= b);
  103. BOOST_C_EXN(a == b);
  104. BOOST_C_EXN(a != b);
  105. # ifdef __BORLANDC__
  106. ::detail::ignore_unused_variable_warning(a);
  107. ::detail::ignore_unused_variable_warning(b);
  108. # endif
  109. }
  110. // comparisons between [1,2] and 3
  111. static void test_12_3() {
  112. const I a(1,2);
  113. const int b = 3;
  114. BOOST_CHECK(a < b);
  115. BOOST_CHECK(a <= b);
  116. BOOST_CHECK(!(a > b));
  117. BOOST_CHECK(!(a >= b));
  118. BOOST_CHECK(!(a == b));
  119. BOOST_CHECK(a != b);
  120. # ifdef __BORLANDC__
  121. ::detail::ignore_unused_variable_warning(a);
  122. ::detail::ignore_unused_variable_warning(b);
  123. # endif
  124. }
  125. // comparisons between [1,2] and [1,2]
  126. static void test_12_12() {
  127. const I a(1,2), b(1,2);
  128. BOOST_C_EXN(a == b);
  129. BOOST_C_EXN(a != b);
  130. # ifdef __BORLANDC__
  131. ::detail::ignore_unused_variable_warning(a);
  132. ::detail::ignore_unused_variable_warning(b);
  133. # endif
  134. }
  135. // comparisons between [1,1] and [1,1]
  136. static void test_11_11() {
  137. const I a(1,1), b(1,1);
  138. BOOST_CHECK(a == b);
  139. BOOST_CHECK(!(a != b));
  140. # ifdef __BORLANDC__
  141. ::detail::ignore_unused_variable_warning(a);
  142. ::detail::ignore_unused_variable_warning(b);
  143. # endif
  144. }
  145. // comparisons between [1,1] and 1
  146. static void test_11_1() {
  147. const I a(1,1);
  148. const int b = 1;
  149. BOOST_CHECK(a == b);
  150. BOOST_CHECK(!(a != b));
  151. # ifdef __BORLANDC__
  152. ::detail::ignore_unused_variable_warning(a);
  153. ::detail::ignore_unused_variable_warning(b);
  154. # endif
  155. }
  156. int test_main(int, char *[]) {
  157. test_12_34();
  158. test_13_24();
  159. test_12_23();
  160. test_12_0();
  161. test_12_1();
  162. test_12_2();
  163. test_12_3();
  164. test_12_12();
  165. test_11_11();
  166. test_11_1();
  167. return 0;
  168. }