test_quantifier_map_shared.hpp 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  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_MAP_SHARED_HPP_JOFA_090119
  9. #define LIBS_ICL_TEST_TEST_QUANTIFIER_MAP_SHARED_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. IntervalMapT map_a, map_b, map_c;
  19. map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
  20. map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
  21. map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
  22. typename IntervalMapT::interval_mapping_type val_pair = IDv(6,9,1);
  23. mapping_pair<T,U> map_pair = K_v(5,1);
  24. CHECK_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, val_pair, map_pair);
  25. CHECK_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, val_pair, map_pair);
  26. }
  27. template <class T, class U, class Trt,
  28. ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap>
  29. void itv_quantifier_check_monoid_et_4_bicremental_types()
  30. {
  31. typedef IntervalMap<T,U,Trt> IntervalMapT;
  32. IntervalMapT map_a, map_b, map_c;
  33. map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
  34. map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
  35. map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
  36. typename IntervalMapT::interval_mapping_type val_pair = IDv(6,9,1);
  37. mapping_pair<T,U> map_pair = K_v(5,1);
  38. CHECK_MONOID_INSTANCE_WRT(et) (map_a, map_b, map_c, val_pair, map_pair);
  39. CHECK_MONOID_INSTANCE_WRT(caret)(map_a, map_b, map_c, val_pair, map_pair);
  40. }
  41. //------------------------------------------------------------------------------
  42. // Abelian monoid EANC
  43. //------------------------------------------------------------------------------
  44. template <class T, class U, class Trt,
  45. ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap>
  46. void itv_quantifier_check_abelian_monoid_plus_4_bicremental_types()
  47. {
  48. typedef IntervalMap<T,U,Trt> IntervalMapT;
  49. IntervalMapT map_a, map_b, map_c;
  50. map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
  51. map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
  52. map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
  53. typename IntervalMapT::interval_mapping_type val_pair = IDv(6,9,1);
  54. mapping_pair<T,U> map_pair = K_v(5,1);
  55. CHECK_ABELIAN_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, val_pair, map_pair);
  56. CHECK_ABELIAN_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, val_pair, map_pair);
  57. }
  58. template <class T, class U, class Trt,
  59. ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap>
  60. void itv_quantifier_check_abelian_monoid_et_4_bicremental_types()
  61. {
  62. typedef IntervalMap<T,U,Trt> IntervalMapT;
  63. IntervalMapT map_a, map_b, map_c;
  64. map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
  65. map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
  66. map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
  67. typename IntervalMapT::interval_mapping_type val_pair = IDv(6,9,1);
  68. mapping_pair<T,U> map_pair = K_v(5,1);
  69. CHECK_ABELIAN_MONOID_INSTANCE_WRT(et) (map_a, map_b, map_c, val_pair, map_pair);
  70. CHECK_ABELIAN_MONOID_INSTANCE_WRT(caret)(map_a, map_b, map_c, val_pair, map_pair);
  71. }
  72. //------------------------------------------------------------------------------
  73. // Abelian partial invertive monoid
  74. //------------------------------------------------------------------------------
  75. template <class T, class U, class Trt,
  76. ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap>
  77. void itv_quantifier_check_partial_invertive_monoid_plus_4_bicremental_types()
  78. {
  79. typedef IntervalMap<T,U,Trt> IntervalMapT;
  80. IntervalMapT map_a, map_b, map_c;
  81. map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
  82. map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
  83. map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
  84. typename IntervalMapT::interval_mapping_type val_pair = IDv(6,9,1);
  85. mapping_pair<T,U> map_pair = K_v(5,1);
  86. CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, val_pair, map_pair);
  87. CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, val_pair, map_pair);
  88. }
  89. //------------------------------------------------------------------------------
  90. // Abelian partial invertive monoid with distinct equality for inversion
  91. //------------------------------------------------------------------------------
  92. template <class T, class U, class Trt,
  93. ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap>
  94. void itv_quantifier_check_partial_invertive_monoid_plus_prot_inv_4_bicremental_types()
  95. {
  96. typedef IntervalMap<T,U,Trt> IntervalMapT;
  97. IntervalMapT map_a, map_b, map_c;
  98. map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
  99. map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
  100. map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
  101. typename IntervalMapT::interval_mapping_type val_pair = IDv(6,9,1);
  102. mapping_pair<T,U> map_pair = K_v(5,1);
  103. CHECK_ABELIAN_MONOID_INSTANCE_WRT(plus)(map_a, map_b, map_c, val_pair, map_pair);
  104. CHECK_ABELIAN_MONOID_INSTANCE_WRT(pipe)(map_a, map_b, map_c, val_pair, map_pair);
  105. #if !defined(_MSC_VER) || (_MSC_VER >= 1400) // 1310==MSVC-7.1 1400 ==MSVC-8.0
  106. CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT_EQUAL(plus)(is_distinct_equal, map_a, map_b, map_c, val_pair, map_pair);
  107. CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT_EQUAL(pipe)(is_distinct_equal, map_a, map_b, map_c, val_pair, map_pair);
  108. #endif
  109. }
  110. //------------------------------------------------------------------------------
  111. // Abelian group EANIC
  112. //------------------------------------------------------------------------------
  113. template <class T, class U, class Trt,
  114. ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap>
  115. void itv_quantifier_check_abelian_group_plus_4_bicremental_types()
  116. {
  117. typedef IntervalMap<T,U,Trt> IntervalMapT;
  118. IntervalMapT map_a, map_b, map_c;
  119. map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
  120. map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
  121. map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
  122. typename IntervalMapT::interval_mapping_type val_pair = IDv(6,9,1);
  123. mapping_pair<T,U> map_pair = K_v(5,1);
  124. CHECK_ABELIAN_GROUP_INSTANCE_WRT(plus) (map_a, map_b, map_c, val_pair, map_pair);
  125. CHECK_ABELIAN_GROUP_INSTANCE_WRT(pipe) (map_a, map_b, map_c, val_pair, map_pair);
  126. }
  127. //------------------------------------------------------------------------------
  128. // (0 - x) + x =d= 0 |
  129. //------------------------------------------------------------------------------
  130. template <class T, class U, class Trt,
  131. ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap>
  132. void itv_quantifier_check_abelian_group_plus_prot_inv_4_bicremental_types()
  133. {
  134. typedef IntervalMap<T,U,Trt> IntervalMapT;
  135. IntervalMapT map_a, map_b, map_c;
  136. map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
  137. map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
  138. map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
  139. typename IntervalMapT::interval_mapping_type val_pair = IDv(6,9,1);
  140. mapping_pair<T,U> map_pair = K_v(5,1);
  141. CHECK_ABELIAN_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, val_pair, map_pair);
  142. CHECK_ABELIAN_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, val_pair, map_pair);
  143. #if !defined(_MSC_VER) || (_MSC_VER >= 1400) // 1310==MSVC-7.1 1400 ==MSVC-8.0
  144. CHECK_ABELIAN_GROUP_INSTANCE_WRT_EQUAL(plus) (is_distinct_equal, map_a, map_b, map_c, val_pair, map_pair);
  145. CHECK_ABELIAN_GROUP_INSTANCE_WRT_EQUAL(pipe) (is_distinct_equal, map_a, map_b, map_c, val_pair, map_pair);
  146. #endif
  147. }
  148. #endif // LIBS_ICL_TEST_TEST_QUANTIFIER_MAP_SHARED_HPP_JOFA_090119