test_icl_interval.cpp 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. /*-----------------------------------------------------------------------------+
  2. Copyright (c) 2008-2009: 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. #define BOOST_TEST_MODULE icl::interval unit test
  9. #include <libs/icl/test/disable_test_warnings.hpp>
  10. #include <string>
  11. #include <boost/mpl/list.hpp>
  12. #include "../unit_test_unwarned.hpp"
  13. // interval instance types
  14. #include "../test_type_lists.hpp"
  15. #include "../test_value_maker.hpp"
  16. #include "../test_interval_laws.hpp"
  17. using namespace std;
  18. using namespace boost;
  19. using namespace unit_test;
  20. using namespace boost::icl;
  21. #include "../test_icl_interval_shared.hpp"
  22. #include "../test_icl_interval.hpp"
  23. #include "../test_icl_dynamic_interval.hpp"
  24. #include "../test_icl_discrete_interval.hpp"
  25. #include "../test_icl_continuous_interval.hpp"
  26. #include "../test_icl_static_interval.hpp"
  27. #include <boost/icl/right_open_interval.hpp>
  28. #include <boost/icl/left_open_interval.hpp>
  29. #include <boost/icl/closed_interval.hpp>
  30. #include <boost/icl/open_interval.hpp>
  31. #include <boost/icl/discrete_interval.hpp>
  32. #include <boost/icl/continuous_interval.hpp>
  33. //- sta.asy.{dis|con} ----------------------------------------------------------
  34. BOOST_AUTO_TEST_CASE_TEMPLATE
  35. (test_itl_right_open_interval_ctor_4_ordered_types, T, ordered_types)
  36. { interval_ctor_4_ordered_types<right_open_interval<T> >(); }
  37. BOOST_AUTO_TEST_CASE_TEMPLATE
  38. (test_itl_right_open_interval_4_ordered_types, T, discrete_types)
  39. { singelizable_interval_4_ordered_types<right_open_interval<T> >(); }
  40. BOOST_AUTO_TEST_CASE_TEMPLATE
  41. (test_itl_right_open_interval_4_bicremental_types, T, discrete_types)
  42. { singelizable_interval_4_bicremental_types<right_open_interval<T> >(); }
  43. BOOST_AUTO_TEST_CASE_TEMPLATE
  44. (test_itl_left_open_interval_ctor_4_ordered_types, T, ordered_types)
  45. { interval_ctor_4_ordered_types<left_open_interval<T> >(); }
  46. BOOST_AUTO_TEST_CASE_TEMPLATE
  47. (test_itl_left_open_interval_4_ordered_types_singelizable, T, signed_discrete_types)
  48. { singelizable_interval_4_ordered_types<left_open_interval<T> >(); }
  49. BOOST_AUTO_TEST_CASE_TEMPLATE
  50. (test_itl_left_open_interval_4_bicremental_types, T, discrete_types)
  51. { singelizable_interval_4_bicremental_types<left_open_interval<T> >(); }
  52. //------------------------------------------------------------------------------
  53. BOOST_AUTO_TEST_CASE_TEMPLATE
  54. (test_itl_distant_intervals_4_discrete_types, T, discrete_types)
  55. { distant_intervals_4_discrete_types<T, std::less>(); }
  56. BOOST_AUTO_TEST_CASE_TEMPLATE
  57. (test_itl_distant_intervals_4_numeric_continuous_types, T, numeric_continuous_types)
  58. { distant_intervals_4_numeric_continuous_types<T, std::less>(); }
  59. //- sta.asy.{dis|con} ----------------------------------------------------------
  60. //- n tests for right_open_inverval --------------------------------------------
  61. BOOST_AUTO_TEST_CASE_TEMPLATE
  62. (fastest_itl_right_open_interval_ctor_4_ordered_types, T, ordered_types)
  63. { interval_ctor_4_ordered_types<right_open_interval<T> >(); }
  64. BOOST_AUTO_TEST_CASE_TEMPLATE
  65. (fastest_itl_right_open_interval_4_ordered_types, T, discrete_types)
  66. { singelizable_interval_4_ordered_types<right_open_interval<T> >(); }
  67. BOOST_AUTO_TEST_CASE_TEMPLATE
  68. (fastest_itl_right_open_interval_4_bicremental_types, T, discrete_types)
  69. { singelizable_interval_4_bicremental_types<right_open_interval<T> >(); }
  70. //- n tests for left_open_inverval ---------------------------------------------
  71. BOOST_AUTO_TEST_CASE_TEMPLATE
  72. (fastest_itl_left_open_interval_ctor_4_ordered_types, T, ordered_types)
  73. { interval_ctor_4_ordered_types<left_open_interval<T> >(); }
  74. BOOST_AUTO_TEST_CASE_TEMPLATE
  75. (fastest_itl_left_open_interval_4_ordered_types_singelizable, T, signed_discrete_types)
  76. { singelizable_interval_4_ordered_types<left_open_interval<T> >(); }
  77. BOOST_AUTO_TEST_CASE_TEMPLATE
  78. (fastest_itl_left_open_interval_4_bicremental_types, T, discrete_types)
  79. { singelizable_interval_4_bicremental_types<left_open_interval<T> >(); }
  80. //- dyn.dis --------------------------------------------------------------------
  81. BOOST_AUTO_TEST_CASE_TEMPLATE
  82. (fastest_itl_discrete_interval_ctor_4_discrete_types_base, T, discrete_types)
  83. { interval_ctor_4_ordered_types<discrete_interval<T> >(); }
  84. BOOST_AUTO_TEST_CASE_TEMPLATE
  85. (fastest_itl_discrete_interval_ctor_4_discrete_types_dynamic, T, discrete_types)
  86. { dynamic_interval_ctor_4_ordered_types<discrete_interval<T> >(); }
  87. BOOST_AUTO_TEST_CASE_TEMPLATE
  88. (fastest_itl_discrete_interval_4_ordered_types, T, discrete_types)
  89. { singelizable_interval_4_ordered_types<discrete_interval<T> >(); }
  90. BOOST_AUTO_TEST_CASE_TEMPLATE
  91. (fastest_itl_discrete_interval_4_bicremental_types, T, discrete_types)
  92. { singelizable_interval_4_bicremental_types<discrete_interval<T> >(); }
  93. //- dyn.con --------------------------------------------------------------------
  94. BOOST_AUTO_TEST_CASE_TEMPLATE
  95. (fastest_itl_continuous_interval_ctor_4_continuous_types_base, T, continuous_types)
  96. { interval_ctor_4_ordered_types<continuous_interval<T> >(); }
  97. BOOST_AUTO_TEST_CASE_TEMPLATE
  98. (fastest_itl_continuous_interval_ctor_4_continuous_types_dynamic, T, continuous_types)
  99. { dynamic_interval_ctor_4_ordered_types<continuous_interval<T> >(); }
  100. BOOST_AUTO_TEST_CASE_TEMPLATE
  101. (fastest_itl_continuous_interval_4_continuous_types_singelizable, T, continuous_types)
  102. { singelizable_interval_4_ordered_types<continuous_interval<T> >(); }
  103. //------------------------------------------------------------------------------
  104. BOOST_AUTO_TEST_CASE_TEMPLATE
  105. (fastest_itl_distant_intervals_4_discrete_types, T, discrete_types)
  106. { distant_intervals_4_discrete_types<T, std::less>(); }
  107. BOOST_AUTO_TEST_CASE_TEMPLATE
  108. (fastest_itl_distant_intervals_4_numeric_continuous_types, T, numeric_continuous_types)
  109. { distant_intervals_4_numeric_continuous_types<T, std::less>(); }
  110. //------------------------------------------------------------------------------
  111. BOOST_AUTO_TEST_CASE_TEMPLATE
  112. (fastest_itl_dynamic_interval_bounds_4_bicremental_types, T, bicremental_types)
  113. { dynamic_interval_bounds_4_bicremental_types<T>(); }
  114. //==============================================================================
  115. //==============================================================================
  116. BOOST_AUTO_TEST_CASE_TEMPLATE
  117. (fastest_icl_interval_equal_4_integral_types, T, integral_types)
  118. { interval_equal_4_integral_types<T>(); }
  119. BOOST_AUTO_TEST_CASE_TEMPLATE
  120. (fastest_icl_interval_less_4_integral_types, T, integral_types)
  121. { interval_less_4_integral_types<T>(); }
  122. BOOST_AUTO_TEST_CASE_TEMPLATE
  123. (fastest_icl_interval_touches_4_bicremental_types, T, bicremental_types)
  124. { interval_touches_4_bicremental_types<T>(); }
  125. BOOST_AUTO_TEST_CASE_TEMPLATE
  126. (fastest_icl_interval_touches_4_integral_types, T, integral_types)
  127. { interval_touches_4_integral_types<T>(); }
  128. BOOST_AUTO_TEST_CASE_TEMPLATE
  129. (fastest_icl_interval_subtract_4_bicremental_types, T, bicremental_types)
  130. { interval_subtract_4_bicremental_types<T>(); }
  131. #ifndef BOOST_ICL_USE_STATIC_BOUNDED_INTERVALS
  132. BOOST_AUTO_TEST_CASE
  133. (fastest_icl_interval_ctor_specific)
  134. { interval_ctor_specific(); }
  135. BOOST_AUTO_TEST_CASE_TEMPLATE
  136. (fastest_icl_interval_equal_4_bicremental_continuous_types, T, bicremental_continuous_types)
  137. { interval_equal_4_bicremental_continuous_types<T>(); }
  138. BOOST_AUTO_TEST_CASE_TEMPLATE
  139. (fastest_icl_interval_infix_intersect_4_bicremental_types, T, bicremental_types)
  140. { interval_infix_intersect_4_bicremental_types<T>(); }
  141. #else
  142. BOOST_AUTO_TEST_CASE_TEMPLATE
  143. (fastest_icl_interval_infix_intersect_4_bicremental_types, T, discrete_types)
  144. { interval_infix_intersect_4_bicremental_types<T>(); }
  145. #endif // ndef BOOST_ICL_USE_STATIC_BOUNDED_INTERVALS