test_quantifier_icl_map.hpp 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. /*-----------------------------------------------------------------------------+
  2. Copyright (c) 2008-2010: Joachim Faulhaber
  3. +------------------------------------------------------------------------------+
  4. Distributed under the Boost Software License, Version 1.0.
  5. (See accompanying file LICENCE.txt or copy at
  6. http://www.boost.org/LICENSE_1_0.txt)
  7. +-----------------------------------------------------------------------------*/
  8. #ifndef LIBS_ICL_TEST_TEST_QUANTIFIER_ICL_MAP_HPP_JOFA_090119
  9. #define LIBS_ICL_TEST_TEST_QUANTIFIER_ICL_MAP_HPP_JOFA_090119
  10. //------------------------------------------------------------------------------
  11. // Monoid EAN
  12. //------------------------------------------------------------------------------
  13. template <class T, class U, class Trt,
  14. ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap>
  15. void itv_quantifier_check_monoid_plus_4_bicremental_types()
  16. {
  17. typedef IntervalMap<T,U,Trt> IntervalMapT;
  18. typedef icl::map<T,U,Trt> MapT;
  19. IntervalMapT itv_map_a, itv_map_b, itv_map_c;
  20. itv_map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
  21. itv_map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
  22. itv_map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
  23. MapT map_a, map_b, map_c;
  24. segmental::atomize(map_a, itv_map_a);
  25. segmental::atomize(map_b, itv_map_b);
  26. segmental::atomize(map_c, itv_map_c);
  27. typename MapT::value_type map_pair1 = sK_v(5,1);
  28. typename MapT::value_type map_pair2 = sK_v(9,3);
  29. CHECK_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, map_pair1, map_pair2);
  30. CHECK_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, map_pair1, map_pair2);
  31. }
  32. template <class T, class U, class Trt,
  33. ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap>
  34. void itv_quantifier_check_monoid_et_4_bicremental_types()
  35. {
  36. typedef IntervalMap<T,U,Trt> IntervalMapT;
  37. typedef icl::map<T,U,Trt> MapT;
  38. IntervalMapT itv_map_a, itv_map_b, itv_map_c;
  39. itv_map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
  40. itv_map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
  41. itv_map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
  42. MapT map_a, map_b, map_c;
  43. segmental::atomize(map_a, itv_map_a);
  44. segmental::atomize(map_b, itv_map_b);
  45. segmental::atomize(map_c, itv_map_c);
  46. typename MapT::value_type map_pair1 = sK_v(5,1);
  47. typename MapT::value_type map_pair2 = sK_v(9,3);
  48. CHECK_MONOID_INSTANCE_WRT(et) (map_a, map_b, map_c, map_pair1, map_pair2);
  49. CHECK_MONOID_INSTANCE_WRT(caret)(map_a, map_b, map_c, map_pair1, map_pair2);
  50. }
  51. //------------------------------------------------------------------------------
  52. // Abelian monoid EANC
  53. //------------------------------------------------------------------------------
  54. template <class T, class U, class Trt,
  55. ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap>
  56. void itv_quantifier_check_abelian_monoid_plus_4_bicremental_types()
  57. {
  58. typedef IntervalMap<T,U,Trt> IntervalMapT;
  59. typedef icl::map<T,U,Trt> MapT;
  60. IntervalMapT itv_map_a, itv_map_b, itv_map_c;
  61. itv_map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
  62. itv_map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
  63. itv_map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
  64. MapT map_a, map_b, map_c;
  65. segmental::atomize(map_a, itv_map_a);
  66. segmental::atomize(map_b, itv_map_b);
  67. segmental::atomize(map_c, itv_map_c);
  68. typename MapT::value_type map_pair1 = sK_v(5,1);
  69. typename MapT::value_type map_pair2 = sK_v(9,3);
  70. CHECK_ABELIAN_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, map_pair1, map_pair2);
  71. CHECK_ABELIAN_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, map_pair1, map_pair2);
  72. }
  73. template <class T, class U, class Trt,
  74. ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap>
  75. void itv_quantifier_check_abelian_monoid_et_4_bicremental_types()
  76. {
  77. typedef IntervalMap<T,U,Trt> IntervalMapT;
  78. typedef icl::map<T,U,Trt> MapT;
  79. IntervalMapT itv_map_a, itv_map_b, itv_map_c;
  80. itv_map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
  81. itv_map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
  82. itv_map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
  83. MapT map_a, map_b, map_c;
  84. segmental::atomize(map_a, itv_map_a);
  85. segmental::atomize(map_b, itv_map_b);
  86. segmental::atomize(map_c, itv_map_c);
  87. typename MapT::value_type map_pair1 = sK_v(5,1);
  88. typename MapT::value_type map_pair2 = sK_v(9,3);
  89. CHECK_ABELIAN_MONOID_INSTANCE_WRT(et) (map_a, map_b, map_c, map_pair1, map_pair2);
  90. CHECK_ABELIAN_MONOID_INSTANCE_WRT(caret)(map_a, map_b, map_c, map_pair1, map_pair2);
  91. }
  92. //------------------------------------------------------------------------------
  93. // Abelian partial invertive monoid
  94. //------------------------------------------------------------------------------
  95. template <class T, class U, class Trt,
  96. ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap>
  97. void itv_quantifier_check_partial_invertive_monoid_plus_4_bicremental_types()
  98. {
  99. typedef IntervalMap<T,U,Trt> IntervalMapT;
  100. typedef icl::map<T,U,Trt> MapT;
  101. IntervalMapT itv_map_a, itv_map_b, itv_map_c;
  102. itv_map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
  103. itv_map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
  104. itv_map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
  105. MapT map_a, map_b, map_c;
  106. segmental::atomize(map_a, itv_map_a);
  107. segmental::atomize(map_b, itv_map_b);
  108. segmental::atomize(map_c, itv_map_c);
  109. typename MapT::value_type map_pair1 = sK_v(5,1);
  110. typename MapT::value_type map_pair2 = sK_v(9,3);
  111. CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, map_pair1, map_pair2);
  112. CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, map_pair1, map_pair2);
  113. }
  114. //------------------------------------------------------------------------------
  115. // Abelian partial invertive monoid with distinct equality for inversion
  116. //------------------------------------------------------------------------------
  117. template <class T, class U, class Trt,
  118. ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap>
  119. void itv_quantifier_check_partial_invertive_monoid_plus_prot_inv_4_bicremental_types()
  120. {
  121. typedef IntervalMap<T,U,Trt> IntervalMapT;
  122. typedef icl::map<T,U,Trt> MapT;
  123. IntervalMapT itv_map_a, itv_map_b, itv_map_c;
  124. itv_map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
  125. itv_map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
  126. itv_map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
  127. MapT map_a, map_b, map_c;
  128. segmental::atomize(map_a, itv_map_a);
  129. segmental::atomize(map_b, itv_map_b);
  130. segmental::atomize(map_c, itv_map_c);
  131. typename MapT::value_type map_pair1 = sK_v(5,1);
  132. typename MapT::value_type map_pair2 = sK_v(9,3);
  133. CHECK_ABELIAN_MONOID_INSTANCE_WRT(plus)(map_a, map_b, map_c, map_pair1, map_pair2);
  134. CHECK_ABELIAN_MONOID_INSTANCE_WRT(pipe)(map_a, map_b, map_c, map_pair1, map_pair2);
  135. #if !defined(_MSC_VER) || (_MSC_VER >= 1400) // 1310==MSVC-7.1 1400 ==MSVC-8.0
  136. CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT_EQUAL(plus)(is_distinct_equal, map_a, map_b, map_c, map_pair1, map_pair2);
  137. CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT_EQUAL(pipe)(is_distinct_equal, map_a, map_b, map_c, map_pair1, map_pair2);
  138. #endif
  139. }
  140. //------------------------------------------------------------------------------
  141. // Abelian group EANIC
  142. //------------------------------------------------------------------------------
  143. template <class T, class U, class Trt,
  144. ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap>
  145. void itv_quantifier_check_abelian_group_plus_4_bicremental_types()
  146. {
  147. typedef IntervalMap<T,U,Trt> IntervalMapT;
  148. typedef icl::map<T,U,Trt> MapT;
  149. IntervalMapT itv_map_a, itv_map_b, itv_map_c;
  150. itv_map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
  151. itv_map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
  152. itv_map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
  153. MapT map_a, map_b, map_c;
  154. segmental::atomize(map_a, itv_map_a);
  155. segmental::atomize(map_b, itv_map_b);
  156. segmental::atomize(map_c, itv_map_c);
  157. typename MapT::value_type map_pair1 = sK_v(5,1);
  158. typename MapT::value_type map_pair2 = sK_v(9,3);
  159. CHECK_ABELIAN_GROUP_INSTANCE_WRT(plus) (map_a, map_b, map_c, map_pair1, map_pair2);
  160. CHECK_ABELIAN_GROUP_INSTANCE_WRT(pipe) (map_a, map_b, map_c, map_pair1, map_pair2);
  161. }
  162. //------------------------------------------------------------------------------
  163. // (0 - x) + x =d= 0 |
  164. //------------------------------------------------------------------------------
  165. template <class T, class U, class Trt,
  166. ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap>
  167. void itv_quantifier_check_abelian_group_plus_prot_inv_4_bicremental_types()
  168. {
  169. typedef IntervalMap<T,U,Trt> IntervalMapT;
  170. typedef icl::map<T,U,Trt> MapT;
  171. IntervalMapT itv_map_a, itv_map_b, itv_map_c;
  172. itv_map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
  173. itv_map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
  174. itv_map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
  175. MapT map_a, map_b, map_c;
  176. segmental::atomize(map_a, itv_map_a);
  177. segmental::atomize(map_b, itv_map_b);
  178. segmental::atomize(map_c, itv_map_c);
  179. typename MapT::value_type map_pair1 = sK_v(5,1);
  180. typename MapT::value_type map_pair2 = sK_v(9,3);
  181. CHECK_ABELIAN_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, map_pair1, map_pair2);
  182. CHECK_ABELIAN_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, map_pair1, map_pair2);
  183. #if !defined(_MSC_VER) || (_MSC_VER >= 1400) // 1310==MSVC-7.1 1400 ==MSVC-8.0
  184. CHECK_ABELIAN_GROUP_INSTANCE_WRT_EQUAL(plus) (is_distinct_equal, map_a, map_b, map_c, map_pair1, map_pair2);
  185. CHECK_ABELIAN_GROUP_INSTANCE_WRT_EQUAL(pipe) (is_distinct_equal, map_a, map_b, map_c, map_pair1, map_pair2);
  186. #endif
  187. }
  188. #endif // LIBS_ICL_TEST_TEST_QUANTIFIER_ICL_MAP_HPP_JOFA_090119