test_interval_map_infix_mixed.cpp 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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_map_infix_mixed 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 <boost/icl/interval_set.hpp>
  17. #include <boost/icl/separate_interval_set.hpp>
  18. #include <boost/icl/split_interval_set.hpp>
  19. #include <boost/icl/interval_map.hpp>
  20. #include <boost/icl/split_interval_map.hpp>
  21. using namespace std;
  22. using namespace boost;
  23. using namespace unit_test;
  24. using namespace boost::icl;
  25. BOOST_AUTO_TEST_CASE_TEMPLATE(test_icl_interval_map_mixed_infix_plus_overload_4_bicremental_types, T, bicremental_types)
  26. {
  27. typedef int U;
  28. typedef interval_map<T,U> IntervalMapT;
  29. interval_map<T,U> join_a;
  30. split_interval_map<T,U> split_a;
  31. join_a .add(CDv(1,3,1)).add(IDv(8,9,1)).add(IIv(6,11,3));
  32. split_a.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
  33. BOOST_CHECK_EQUAL(split_a + join_a, join_a + split_a);
  34. }
  35. BOOST_AUTO_TEST_CASE_TEMPLATE(test_icl_interval_map_mixed_infix_pipe_overload_4_bicremental_types, T, bicremental_types)
  36. {
  37. typedef int U;
  38. typedef interval_map<T,U> IntervalMapT;
  39. interval_map<T,U> join_a;
  40. split_interval_map<T,U> split_a;
  41. join_a .add(CDv(1,3,1)).add(IDv(8,9,1)).add(IIv(6,11,3));
  42. split_a.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
  43. BOOST_CHECK_EQUAL(split_a | join_a, join_a | split_a);
  44. }
  45. BOOST_AUTO_TEST_CASE_TEMPLATE(test_icl_interval_map_mixed_infix_minus_overload_4_bicremental_types, T, bicremental_types)
  46. {
  47. typedef int U;
  48. typedef interval_map<T,U> IntervalMapT;
  49. interval_map<T,U> join_a, join_b;
  50. split_interval_map<T,U> split_a, split_b;
  51. join_a .add(CDv(1,3,1)).add(IDv(8,9,1)).add(IIv(6,11,3));
  52. split_a.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
  53. join_b .add(CDv(1,3,1)).add(IIv(6,11,3));
  54. split_b.add(IDv(0,9,2)).add(IIv(3,6,1));
  55. BOOST_CHECK_EQUAL(split_a - join_a, (split_b = split_a) -= join_a);
  56. BOOST_CHECK_EQUAL(split_a - join_a, split_b);
  57. BOOST_CHECK_EQUAL(join_a - split_a, (join_b = join_a) -= split_a);
  58. BOOST_CHECK_EQUAL(join_a - split_a, join_b);
  59. }
  60. BOOST_AUTO_TEST_CASE_TEMPLATE(test_icl_interval_map_mixed_infix_et_overload_4_bicremental_types, T, bicremental_types)
  61. {
  62. typedef int U;
  63. typedef interval_map<T,U> IntervalMapT;
  64. interval_map<T,U> join_a, join_b;
  65. split_interval_map<T,U> split_a, split_b;
  66. join_a .add(CDv(1,3,1)).add(IDv(8,9,1)).add(IIv(6,11,3));
  67. split_a.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
  68. BOOST_CHECK_EQUAL(split_a & join_a, join_a & split_a);
  69. BOOST_CHECK_EQUAL(split_a & join_a, (split_b = split_a) &= join_a);
  70. BOOST_CHECK_EQUAL(split_a & join_a, split_b);
  71. BOOST_CHECK_EQUAL(join_a & split_a, (split_b = split_a) &= join_a);
  72. BOOST_CHECK_EQUAL(join_a & split_a, split_b);
  73. }