]>
Commit | Line | Data |
---|---|---|
92f5a8d4 | 1 | /*-----------------------------------------------------------------------------+ |
7c673cae FG |
2 | Copyright (c) 2010-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 | ||
9 | /*-----------------------------------------------------------------------------+ | |
92f5a8d4 | 10 | Function templates to call functions in object oriented or namespace glabal |
7c673cae FG |
11 | versions. |
12 | +-----------------------------------------------------------------------------*/ | |
13 | #ifndef BOOST_LIBS_ICL_TEST_INTERVAL_LAWS_HPP_JOFA_101011 | |
14 | #define BOOST_LIBS_ICL_TEST_INTERVAL_LAWS_HPP_JOFA_101011 | |
15 | ||
16 | #include <boost/icl/detail/notate.hpp> | |
17 | #include <boost/icl/detail/design_config.hpp> | |
18 | #include <boost/icl/type_traits/interval_type_default.hpp> | |
19 | #include <boost/icl/interval.hpp> | |
20 | #include <boost/icl/type_traits/is_interval.hpp> | |
21 | #include <boost/icl/concept/interval.hpp> | |
22 | ||
23 | namespace boost{ namespace icl | |
24 | { | |
25 | ||
26 | template<class Type> | |
27 | typename enable_if<is_interval<Type>, void>::type | |
28 | check_border_containedness(const Type& itv) | |
29 | { | |
30 | typedef typename interval_traits<Type>::domain_type domain_type; | |
31 | domain_type lo = icl::lower(itv); | |
32 | domain_type up = icl::upper(itv); | |
33 | ||
92f5a8d4 | 34 | //LAW: The empty set is contained in every set |
7c673cae FG |
35 | BOOST_CHECK_EQUAL(icl::contains(itv, icl::identity_element<Type>::value()), true); |
36 | //LAW: Reflexivity: Every interval contains itself | |
37 | BOOST_CHECK_EQUAL(icl::contains(itv, itv), true); | |
38 | ||
39 | if(icl::bounds(itv) == interval_bounds::closed()) | |
40 | { | |
41 | BOOST_CHECK_EQUAL(icl::contains(itv, lo), true); | |
42 | BOOST_CHECK_EQUAL(icl::contains(itv, up), true); | |
43 | BOOST_CHECK_EQUAL(icl::contains(itv, icl::interval<domain_type>:: closed(lo,up)), true); | |
44 | BOOST_CHECK_EQUAL(icl::contains(itv, icl::interval<domain_type>::right_open(lo,up)), true); | |
45 | BOOST_CHECK_EQUAL(icl::contains(itv, icl::interval<domain_type>:: left_open(lo,up)), true); | |
46 | BOOST_CHECK_EQUAL(icl::contains(itv, icl::interval<domain_type>:: open(lo,up)), true); | |
47 | } | |
48 | else if(icl::bounds(itv) == interval_bounds::right_open()) | |
49 | { | |
50 | BOOST_CHECK_EQUAL(icl::contains(itv, lo), true); | |
51 | BOOST_CHECK_EQUAL(icl::contains(itv, up), false); | |
52 | BOOST_CHECK_EQUAL(icl::contains(itv, icl::interval<domain_type>:: closed(lo,up)), false); | |
53 | BOOST_CHECK_EQUAL(icl::contains(itv, icl::interval<domain_type>::right_open(lo,up)), true); | |
54 | BOOST_CHECK_EQUAL(icl::contains(itv, icl::interval<domain_type>:: left_open(lo,up)), false); | |
55 | BOOST_CHECK_EQUAL(icl::contains(itv, icl::interval<domain_type>:: open(lo,up)), true); | |
56 | } | |
57 | else if(icl::bounds(itv) == interval_bounds::left_open()) | |
58 | { | |
59 | BOOST_CHECK_EQUAL(icl::contains(itv, lo), false); | |
60 | BOOST_CHECK_EQUAL(icl::contains(itv, up), true); | |
61 | BOOST_CHECK_EQUAL(icl::contains(itv, icl::interval<domain_type>:: closed(lo,up)), false); | |
62 | BOOST_CHECK_EQUAL(icl::contains(itv, icl::interval<domain_type>::right_open(lo,up)), false); | |
63 | BOOST_CHECK_EQUAL(icl::contains(itv, icl::interval<domain_type>:: left_open(lo,up)), true); | |
64 | BOOST_CHECK_EQUAL(icl::contains(itv, icl::interval<domain_type>:: open(lo,up)), true); | |
65 | } | |
66 | else if(icl::bounds(itv) == interval_bounds::open()) | |
67 | { | |
68 | BOOST_CHECK_EQUAL(icl::contains(itv, lo), false); | |
69 | BOOST_CHECK_EQUAL(icl::contains(itv, up), false); | |
70 | BOOST_CHECK_EQUAL(icl::contains(itv, icl::interval<domain_type>:: closed(lo,up)), false); | |
71 | BOOST_CHECK_EQUAL(icl::contains(itv, icl::interval<domain_type>::right_open(lo,up)), false); | |
72 | BOOST_CHECK_EQUAL(icl::contains(itv, icl::interval<domain_type>:: left_open(lo,up)), false); | |
73 | BOOST_CHECK_EQUAL(icl::contains(itv, icl::interval<domain_type>:: open(lo,up)), true); | |
74 | } | |
75 | else | |
76 | { | |
77 | bool interval_borders_are_open_v_left_open_v_right_open_v_closed = true; | |
78 | BOOST_CHECK_EQUAL(interval_borders_are_open_v_left_open_v_right_open_v_closed, false); | |
79 | } | |
80 | } | |
81 | ||
82 | }} // namespace boost icl | |
83 | ||
84 | #endif // BOOST_ICL_TEST_INTERVAL_LAWS_HPP_JOFA_100908 |