test_icl_dynamic_interval.hpp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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. #ifndef BOOST_ICL_TEST_ICL_DYNAMIC_INTERVAL_HPP_JOFA_100930
  9. #define BOOST_ICL_TEST_ICL_DYNAMIC_INTERVAL_HPP_JOFA_100930
  10. template <class IntervalT>
  11. void dynamic_interval_ctor_4_ordered_types()
  12. {
  13. typedef typename domain_type_of<interval_traits<IntervalT> >::type T;
  14. BOOST_CHECK_EQUAL(IntervalT().lower(), icl::identity_element<T>::value());
  15. BOOST_CHECK_EQUAL(IntervalT().upper(), icl::identity_element<T>::value());
  16. BOOST_CHECK_EQUAL(icl::lower(IntervalT()), icl::identity_element<T>::value());
  17. BOOST_CHECK_EQUAL(icl::upper(IntervalT()), icl::identity_element<T>::value());
  18. IntervalT empty_itv = IntervalT(icl::identity_element<T>::value(), icl::identity_element<T>::value());
  19. BOOST_CHECK_EQUAL(IntervalT(), empty_itv);
  20. BOOST_CHECK_EQUAL(IntervalT(), IntervalT(icl::identity_element<T>::value(), icl::identity_element<T>::value()));
  21. BOOST_CHECK_EQUAL(IntervalT(), IntervalT(icl::identity_element<T>::value(), icl::identity_element<T>::value(), interval_bounds::right_open()));
  22. }
  23. template <class T>
  24. void dynamic_interval_bounds_4_bicremental_types()
  25. {
  26. typedef typename icl::interval<T>::type IntervalT;
  27. // BOOST_CHECK_EQUAL( T(), icl::pred(icl::succ(T())));
  28. BOOST_CHECK_EQUAL( icl::identity_element<T>::value(), icl::pred(icl::succ(icl::identity_element<T>::value())) );
  29. BOOST_CHECK_EQUAL( icl::unit_element<T>::value(), icl::succ(icl::identity_element<T>::value()) );
  30. BOOST_CHECK_EQUAL( length(IntervalT()), icl::identity_element<typename difference_type_of<T>::type>::value() );
  31. //LAW: I x: borders(x)==closed => contains(x, lower(x)) && contains(x, upper(x))
  32. check_border_containedness(I_I(0,0));
  33. check_border_containedness(I_I(2,5));
  34. check_border_containedness(I_D(0,1));
  35. check_border_containedness(I_D(2,5));
  36. check_border_containedness(C_I(0,1));
  37. check_border_containedness(C_I(2,5));
  38. check_border_containedness(C_D(0,2));
  39. check_border_containedness(C_D(2,5));
  40. }
  41. template <class T>
  42. void discrete_dynamic_interval_bounds_4_bicremental_types()
  43. {
  44. //CL typedef typename icl::interval<T>::type IntervalT;
  45. BOOST_CHECK( icl::bounds(I_I(2,4)) == interval_bounds::closed() );
  46. BOOST_CHECK( icl::bounds(I_D(2,5)) == interval_bounds::right_open() );
  47. BOOST_CHECK( icl::bounds(C_I(1,4)) == interval_bounds::left_open() );
  48. BOOST_CHECK( icl::bounds(C_D(1,5)) == interval_bounds::open() );
  49. }
  50. #endif // BOOST_ICL_TEST_ICL_DYNAMIC_INTERVAL_HPP_JOFA_100930