cmp_exp.cpp 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366
  1. /* Boost test/cmp_exp.cpp
  2. * test explicit 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(cerlt(a, b));
  15. BOOST_CHECK(cerle(a, b));
  16. BOOST_CHECK(!cergt(a, b));
  17. BOOST_CHECK(!cerge(a, b));
  18. BOOST_CHECK(!cerlt(b, a));
  19. BOOST_CHECK(!cerle(b, a));
  20. BOOST_CHECK(cergt(b, a));
  21. BOOST_CHECK(cerge(b, a));
  22. BOOST_CHECK(poslt(a, b));
  23. BOOST_CHECK(posle(a, b));
  24. BOOST_CHECK(!posgt(a, b));
  25. BOOST_CHECK(!posge(a, b));
  26. BOOST_CHECK(!poslt(b, a));
  27. BOOST_CHECK(!posle(b, a));
  28. BOOST_CHECK(posgt(b, a));
  29. BOOST_CHECK(posge(b, a));
  30. BOOST_CHECK(!cereq(a, b));
  31. BOOST_CHECK(cerne(a, b));
  32. BOOST_CHECK(!poseq(a, b));
  33. BOOST_CHECK(posne(a, b));
  34. BOOST_CHECK(!cereq(b, a));
  35. BOOST_CHECK(cerne(b, a));
  36. BOOST_CHECK(!poseq(b, a));
  37. BOOST_CHECK(posne(b, a));
  38. # ifdef __BORLANDC__
  39. ::detail::ignore_unused_variable_warning(a);
  40. ::detail::ignore_unused_variable_warning(b);
  41. # endif
  42. }
  43. // comparisons between [1,3] and [2,4]
  44. static void test_13_24() {
  45. const I a(1,3), b(2,4);
  46. BOOST_CHECK(!cerlt(a, b));
  47. BOOST_CHECK(!cerle(a, b));
  48. BOOST_CHECK(!cergt(a, b));
  49. BOOST_CHECK(!cerge(a, b));
  50. BOOST_CHECK(!cerlt(b, a));
  51. BOOST_CHECK(!cerle(b, a));
  52. BOOST_CHECK(!cergt(b, a));
  53. BOOST_CHECK(!cerge(b, a));
  54. BOOST_CHECK(poslt(a, b));
  55. BOOST_CHECK(posle(a, b));
  56. BOOST_CHECK(posgt(a, b));
  57. BOOST_CHECK(posge(a, b));
  58. BOOST_CHECK(poslt(b, a));
  59. BOOST_CHECK(posle(b, a));
  60. BOOST_CHECK(posgt(b, a));
  61. BOOST_CHECK(posge(b, a));
  62. BOOST_CHECK(!cereq(a, b));
  63. BOOST_CHECK(!cerne(a, b));
  64. BOOST_CHECK(poseq(a, b));
  65. BOOST_CHECK(posne(a, b));
  66. BOOST_CHECK(!cereq(b, a));
  67. BOOST_CHECK(!cerne(b, a));
  68. BOOST_CHECK(poseq(b, a));
  69. BOOST_CHECK(posne(b, a));
  70. # ifdef __BORLANDC__
  71. ::detail::ignore_unused_variable_warning(a);
  72. ::detail::ignore_unused_variable_warning(b);
  73. # endif
  74. }
  75. // comparisons between [1,2] and [2,3]
  76. static void test_12_23() {
  77. const I a(1,2), b(2,3);
  78. BOOST_CHECK(!cerlt(a, b));
  79. BOOST_CHECK(cerle(a, b));
  80. BOOST_CHECK(!cergt(a, b));
  81. BOOST_CHECK(!cerge(a, b));
  82. BOOST_CHECK(!cerlt(b, a));
  83. BOOST_CHECK(!cerle(b, a));
  84. BOOST_CHECK(!cergt(b, a));
  85. BOOST_CHECK(cerge(b, a));
  86. BOOST_CHECK(poslt(a, b));
  87. BOOST_CHECK(posle(a, b));
  88. BOOST_CHECK(!posgt(a, b));
  89. BOOST_CHECK(posge(a, b));
  90. BOOST_CHECK(!poslt(b, a));
  91. BOOST_CHECK(posle(b, a));
  92. BOOST_CHECK(posgt(b, a));
  93. BOOST_CHECK(posge(b, a));
  94. BOOST_CHECK(!cereq(a, b));
  95. BOOST_CHECK(!cerne(a, b));
  96. BOOST_CHECK(poseq(a, b));
  97. BOOST_CHECK(posne(a, b));
  98. BOOST_CHECK(!cereq(b, a));
  99. BOOST_CHECK(!cerne(b, a));
  100. BOOST_CHECK(poseq(b, a));
  101. BOOST_CHECK(posne(b, a));
  102. # ifdef __BORLANDC__
  103. ::detail::ignore_unused_variable_warning(a);
  104. ::detail::ignore_unused_variable_warning(b);
  105. # endif
  106. }
  107. // comparisons between [1,2] and 0
  108. static void test_12_0() {
  109. const I a(1,2);
  110. const int b = 0;
  111. BOOST_CHECK(!cerlt(a, b));
  112. BOOST_CHECK(!cerle(a, b));
  113. BOOST_CHECK(cergt(a, b));
  114. BOOST_CHECK(cerge(a, b));
  115. BOOST_CHECK(cerlt(b, a));
  116. BOOST_CHECK(cerle(b, a));
  117. BOOST_CHECK(!cergt(b, a));
  118. BOOST_CHECK(!cerge(b, a));
  119. BOOST_CHECK(!poslt(a, b));
  120. BOOST_CHECK(!posle(a, b));
  121. BOOST_CHECK(posgt(a, b));
  122. BOOST_CHECK(posge(a, b));
  123. BOOST_CHECK(poslt(b, a));
  124. BOOST_CHECK(posle(b, a));
  125. BOOST_CHECK(!posgt(b, a));
  126. BOOST_CHECK(!posge(b, a));
  127. BOOST_CHECK(!cereq(a, b));
  128. BOOST_CHECK(cerne(a, b));
  129. BOOST_CHECK(!poseq(a, b));
  130. BOOST_CHECK(posne(a, b));
  131. BOOST_CHECK(!cereq(b, a));
  132. BOOST_CHECK(cerne(b, a));
  133. BOOST_CHECK(!poseq(b, a));
  134. BOOST_CHECK(posne(b, a));
  135. # ifdef __BORLANDC__
  136. ::detail::ignore_unused_variable_warning(a);
  137. ::detail::ignore_unused_variable_warning(b);
  138. # endif
  139. }
  140. // comparisons between [1,2] and 1
  141. static void test_12_1() {
  142. const I a(1,2);
  143. const int b = 1;
  144. BOOST_CHECK(!cerlt(a, b));
  145. BOOST_CHECK(!cerle(a, b));
  146. BOOST_CHECK(!cergt(a, b));
  147. BOOST_CHECK(cerge(a, b));
  148. BOOST_CHECK(!cerlt(b, a));
  149. BOOST_CHECK(cerle(b, a));
  150. BOOST_CHECK(!cergt(b, a));
  151. BOOST_CHECK(!cerge(b, a));
  152. BOOST_CHECK(!poslt(a, b));
  153. BOOST_CHECK(posle(a, b));
  154. BOOST_CHECK(posgt(a, b));
  155. BOOST_CHECK(posge(a, b));
  156. BOOST_CHECK(poslt(b, a));
  157. BOOST_CHECK(posle(b, a));
  158. BOOST_CHECK(!posgt(b, a));
  159. BOOST_CHECK(posge(b, a));
  160. BOOST_CHECK(!cereq(a, b));
  161. BOOST_CHECK(!cerne(a, b));
  162. BOOST_CHECK(poseq(a, b));
  163. BOOST_CHECK(posne(a, b));
  164. BOOST_CHECK(!cereq(b, a));
  165. BOOST_CHECK(!cerne(b, a));
  166. BOOST_CHECK(poseq(b, a));
  167. BOOST_CHECK(posne(b, a));
  168. # ifdef __BORLANDC__
  169. ::detail::ignore_unused_variable_warning(a);
  170. ::detail::ignore_unused_variable_warning(b);
  171. # endif
  172. }
  173. // comparisons between [1,2] and 2
  174. static void test_12_2() {
  175. const I a(1,2);
  176. const int b = 2;
  177. BOOST_CHECK(!cerlt(a, b));
  178. BOOST_CHECK(cerle(a, b));
  179. BOOST_CHECK(!cergt(a, b));
  180. BOOST_CHECK(!cerge(a, b));
  181. BOOST_CHECK(!cerlt(b, a));
  182. BOOST_CHECK(!cerle(b, a));
  183. BOOST_CHECK(!cergt(b, a));
  184. BOOST_CHECK(cerge(b, a));
  185. BOOST_CHECK(poslt(a, b));
  186. BOOST_CHECK(posle(a, b));
  187. BOOST_CHECK(!posgt(a, b));
  188. BOOST_CHECK(posge(a, b));
  189. BOOST_CHECK(!poslt(b, a));
  190. BOOST_CHECK(posle(b, a));
  191. BOOST_CHECK(posgt(b, a));
  192. BOOST_CHECK(posge(b, a));
  193. BOOST_CHECK(!cereq(a, b));
  194. BOOST_CHECK(!cerne(a, b));
  195. BOOST_CHECK(poseq(a, b));
  196. BOOST_CHECK(posne(a, b));
  197. BOOST_CHECK(!cereq(b, a));
  198. BOOST_CHECK(!cerne(b, a));
  199. BOOST_CHECK(poseq(b, a));
  200. BOOST_CHECK(posne(b, a));
  201. # ifdef __BORLANDC__
  202. ::detail::ignore_unused_variable_warning(a);
  203. ::detail::ignore_unused_variable_warning(b);
  204. # endif
  205. }
  206. // comparisons between [1,2] and 3
  207. static void test_12_3() {
  208. const I a(1,2);
  209. const int b = 3;
  210. BOOST_CHECK(cerlt(a, b));
  211. BOOST_CHECK(cerle(a, b));
  212. BOOST_CHECK(!cergt(a, b));
  213. BOOST_CHECK(!cerge(a, b));
  214. BOOST_CHECK(!cerlt(b, a));
  215. BOOST_CHECK(!cerle(b, a));
  216. BOOST_CHECK(cergt(b, a));
  217. BOOST_CHECK(cerge(b, a));
  218. BOOST_CHECK(poslt(a, b));
  219. BOOST_CHECK(posle(a, b));
  220. BOOST_CHECK(!posgt(a, b));
  221. BOOST_CHECK(!posge(a, b));
  222. BOOST_CHECK(!poslt(b, a));
  223. BOOST_CHECK(!posle(b, a));
  224. BOOST_CHECK(posgt(b, a));
  225. BOOST_CHECK(posge(b, a));
  226. BOOST_CHECK(!cereq(a, b));
  227. BOOST_CHECK(cerne(a, b));
  228. BOOST_CHECK(!poseq(a, b));
  229. BOOST_CHECK(posne(a, b));
  230. BOOST_CHECK(!cereq(b, a));
  231. BOOST_CHECK(cerne(b, a));
  232. BOOST_CHECK(!poseq(b, a));
  233. BOOST_CHECK(posne(b, a));
  234. # ifdef __BORLANDC__
  235. ::detail::ignore_unused_variable_warning(a);
  236. ::detail::ignore_unused_variable_warning(b);
  237. # endif
  238. }
  239. static void test_12_12() {
  240. const I a(1,2), b(1,2);
  241. BOOST_CHECK(!cereq(a, b));
  242. BOOST_CHECK(!cerne(a, b));
  243. BOOST_CHECK(poseq(a, b));
  244. BOOST_CHECK(posne(a, b));
  245. BOOST_CHECK(!cereq(b, a));
  246. BOOST_CHECK(!cerne(b, a));
  247. BOOST_CHECK(poseq(b, a));
  248. BOOST_CHECK(posne(b, a));
  249. # ifdef __BORLANDC__
  250. ::detail::ignore_unused_variable_warning(a);
  251. ::detail::ignore_unused_variable_warning(b);
  252. # endif
  253. }
  254. static void test_11_11() {
  255. const I a(1,1), b(1,1);
  256. BOOST_CHECK(cereq(a, b));
  257. BOOST_CHECK(!cerne(a, b));
  258. BOOST_CHECK(poseq(a, b));
  259. BOOST_CHECK(!posne(a, b));
  260. BOOST_CHECK(cereq(b, a));
  261. BOOST_CHECK(!cerne(b, a));
  262. BOOST_CHECK(poseq(b, a));
  263. BOOST_CHECK(!posne(b, a));
  264. # ifdef __BORLANDC__
  265. ::detail::ignore_unused_variable_warning(a);
  266. ::detail::ignore_unused_variable_warning(b);
  267. # endif
  268. }
  269. static void test_11_1() {
  270. const I a(1,1);
  271. const int b = 1;
  272. BOOST_CHECK(cereq(a, b));
  273. BOOST_CHECK(!cerne(a, b));
  274. BOOST_CHECK(poseq(a, b));
  275. BOOST_CHECK(!posne(a, b));
  276. BOOST_CHECK(cereq(b, a));
  277. BOOST_CHECK(!cerne(b, a));
  278. BOOST_CHECK(poseq(b, a));
  279. BOOST_CHECK(!posne(b, a));
  280. # ifdef __BORLANDC__
  281. ::detail::ignore_unused_variable_warning(a);
  282. ::detail::ignore_unused_variable_warning(b);
  283. # endif
  284. }
  285. int test_main(int, char *[]) {
  286. test_12_34();
  287. test_13_24();
  288. test_12_23();
  289. test_12_0();
  290. test_12_1();
  291. test_12_2();
  292. test_12_3();
  293. test_12_12();
  294. test_11_11();
  295. test_11_1();
  296. return 0;
  297. }