test_set_icl_set.hpp 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  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_SET_ICL_SET_HPP_JOFA_090119
  9. #define LIBS_ICL_TEST_TEST_SET_ICL_SET_HPP_JOFA_090119
  10. #include "portability.hpp"
  11. //------------------------------------------------------------------------------
  12. // Monoid EAN
  13. //------------------------------------------------------------------------------
  14. template <class T, ICL_IntervalSet_TEMPLATE(_T) IntervalSet>
  15. void itl_set_check_monoid_plus_4_bicremental_types()
  16. {
  17. typedef IntervalSet<T> IntervalSetT;
  18. typedef std::set<T> SetT;
  19. IntervalSetT itv_set_a, itv_set_b, itv_set_c;
  20. itv_set_a.add(I_D(3,6)).add(I_I(5,7));
  21. itv_set_b.add(C_D(1,3)).add(I_D(8,9));
  22. itv_set_c.add(I_D(0,9)).add(I_I(3,6)).add(I_D(5,7));
  23. SetT set_a, set_b, set_c;
  24. segmental::atomize(set_a, itv_set_a);
  25. segmental::atomize(set_b, itv_set_b);
  26. segmental::atomize(set_c, itv_set_c);
  27. T val1 = MK_v(7);
  28. T val2 = MK_v(5);
  29. CHECK_MONOID_INSTANCE_WRT(plus) (set_a, set_b, set_c, val1, val2);
  30. CHECK_MONOID_INSTANCE_WRT(pipe) (set_a, set_b, set_c, val1, val2);
  31. }
  32. template <class T, ICL_IntervalSet_TEMPLATE(_T) IntervalSet>
  33. void itl_set_check_monoid_et_4_bicremental_types()
  34. {
  35. typedef IntervalSet<T> IntervalSetT;
  36. typedef std::set<T> SetT;
  37. IntervalSetT itv_set_a, itv_set_b, itv_set_c;
  38. itv_set_a.add(I_D(3,6)).add(I_I(5,7));
  39. itv_set_b.add(C_D(1,3)).add(I_D(8,9));
  40. itv_set_c.add(I_D(0,9)).add(I_I(3,6)).add(I_D(5,7));
  41. SetT set_a, set_b, set_c;
  42. segmental::atomize(set_a, itv_set_a);
  43. segmental::atomize(set_b, itv_set_b);
  44. segmental::atomize(set_c, itv_set_c);
  45. T val1 = MK_v(7);
  46. T val2 = MK_v(5);
  47. CHECK_MONOID_INSTANCE_WRT(et) (set_a, set_b, set_c, val1, val2);
  48. CHECK_MONOID_INSTANCE_WRT(caret)(set_a, set_b, set_c, val1, val2);
  49. }
  50. //------------------------------------------------------------------------------
  51. // Abelian monoid EANC
  52. //------------------------------------------------------------------------------
  53. template <class T, ICL_IntervalSet_TEMPLATE(_T) IntervalSet>
  54. void itl_set_check_abelian_monoid_plus_4_bicremental_types()
  55. {
  56. typedef IntervalSet<T> IntervalSetT;
  57. typedef std::set<T> SetT;
  58. IntervalSetT itv_set_a, itv_set_b, itv_set_c;
  59. itv_set_a.add(I_D(3,6)).add(I_I(5,7));
  60. itv_set_b.add(C_D(1,3)).add(I_D(8,9));
  61. itv_set_c.add(I_D(0,9)).add(I_I(3,6)).add(I_D(5,7));
  62. SetT set_a, set_b, set_c;
  63. segmental::atomize(set_a, itv_set_a);
  64. segmental::atomize(set_b, itv_set_b);
  65. segmental::atomize(set_c, itv_set_c);
  66. T val1 = MK_v(7);
  67. T val2 = MK_v(5);
  68. CHECK_ABELIAN_MONOID_INSTANCE_WRT(plus) (set_a, set_b, set_c, val1, val2);
  69. CHECK_ABELIAN_MONOID_INSTANCE_WRT(pipe) (set_a, set_b, set_c, val1, val2);
  70. }
  71. template <class T, ICL_IntervalSet_TEMPLATE(_T) IntervalSet>
  72. void itl_set_check_abelian_monoid_et_4_bicremental_types()
  73. {
  74. typedef IntervalSet<T> IntervalSetT;
  75. typedef std::set<T> SetT;
  76. IntervalSetT itv_set_a, itv_set_b, itv_set_c;
  77. itv_set_a.add(I_D(3,6)).add(I_I(5,7));
  78. itv_set_b.add(C_D(1,3)).add(I_D(8,9));
  79. itv_set_c.add(I_D(0,9)).add(I_I(3,6)).add(I_D(5,7));
  80. SetT set_a, set_b, set_c;
  81. segmental::atomize(set_a, itv_set_a);
  82. segmental::atomize(set_b, itv_set_b);
  83. segmental::atomize(set_c, itv_set_c);
  84. T val1 = MK_v(7);
  85. T val2 = MK_v(5);
  86. CHECK_ABELIAN_MONOID_INSTANCE_WRT(et) (set_a, set_b, set_c, val1, val2);
  87. CHECK_ABELIAN_MONOID_INSTANCE_WRT(caret)(set_a, set_b, set_c, val1, val2);
  88. }
  89. //------------------------------------------------------------------------------
  90. // Abelian partial invertive monoid
  91. //------------------------------------------------------------------------------
  92. template <class T, ICL_IntervalSet_TEMPLATE(_T) IntervalSet>
  93. void itl_set_check_partial_invertive_monoid_plus_4_bicremental_types()
  94. {
  95. typedef IntervalSet<T> IntervalSetT;
  96. typedef std::set<T> SetT;
  97. IntervalSetT itv_set_a, itv_set_b, itv_set_c;
  98. itv_set_a.add(I_D(3,6)).add(I_I(5,7));
  99. itv_set_b.add(C_D(1,3)).add(I_D(8,9));
  100. itv_set_c.add(I_D(0,9)).add(I_I(3,6)).add(I_D(5,7));
  101. SetT set_a, set_b, set_c;
  102. segmental::atomize(set_a, itv_set_a);
  103. segmental::atomize(set_b, itv_set_b);
  104. segmental::atomize(set_c, itv_set_c);
  105. T val1 = MK_v(7);
  106. T val2 = MK_v(5);
  107. CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT(plus) (set_a, set_b, set_c, val1, val2);
  108. CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT(pipe) (set_a, set_b, set_c, val1, val2);
  109. }
  110. #endif // LIBS_ICL_TEST_TEST_SET_ICL_SET_HPP_JOFA_090119