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 
14 // interval instance types
15 #include "../test_type_lists.hpp"
16 #include "../test_value_maker.hpp"
17 #include "../test_interval_laws.hpp"
18 
19 #include <boost/icl/right_open_interval.hpp>
20 #include <boost/icl/left_open_interval.hpp>
21 #include <boost/icl/closed_interval.hpp>
22 #include <boost/icl/open_interval.hpp>
23 
24 #include <boost/icl/discrete_interval.hpp>
25 #include <boost/icl/continuous_interval.hpp>
26 
27 using namespace std;
28 using namespace boost;
29 using namespace unit_test;
30 using namespace boost::icl;
31 
32 #include "../test_icl_interval_shared.hpp"
33 #include "../test_icl_interval.hpp"
34 #include "../test_icl_dynamic_interval.hpp"
35 #include "../test_icl_discrete_interval.hpp"
36 #include "../test_icl_continuous_interval.hpp"
37 #include "../test_icl_static_interval.hpp"
38 
39 //==============================================================================
40 //= Traits
41 //==============================================================================
BOOST_AUTO_TEST_CASE(fastest_icl_discrete_interval_traits)42 BOOST_AUTO_TEST_CASE
43 (fastest_icl_discrete_interval_traits)
44 {            discrete_interval_traits<discrete_type_1, discrete_interval<discrete_type_1> >(); }
45 
46 //==============================================================================
47 
48 //- sta.asy.{dis|con} ----------------------------------------------------------
BOOST_AUTO_TEST_CASE(fastest_icl_right_open_interval_ctor_4_ordered_types)49 BOOST_AUTO_TEST_CASE
50 (fastest_icl_right_open_interval_ctor_4_ordered_types)
51 {                       interval_ctor_4_ordered_types<right_open_interval<ordered_type_1> >(); }
52 
BOOST_AUTO_TEST_CASE(fastest_icl_right_open_interval_4_ordered_types)53 BOOST_AUTO_TEST_CASE
54 (fastest_icl_right_open_interval_4_ordered_types)
55 {          singelizable_interval_4_ordered_types<right_open_interval<discrete_type_1> >(); }
56 
BOOST_AUTO_TEST_CASE(fastest_icl_right_open_interval_4_bicremental_types)57 BOOST_AUTO_TEST_CASE
58 (fastest_icl_right_open_interval_4_bicremental_types)
59 {          singelizable_interval_4_bicremental_types<right_open_interval<discrete_type_2> >(); }
60 
BOOST_AUTO_TEST_CASE(fastest_icl_left_open_interval_ctor_4_ordered_types)61 BOOST_AUTO_TEST_CASE
62 (fastest_icl_left_open_interval_ctor_4_ordered_types)
63 {                      interval_ctor_4_ordered_types<left_open_interval<ordered_type_2> >(); }
64 
BOOST_AUTO_TEST_CASE(fastest_icl_left_open_interval_4_ordered_types_singelizable)65 BOOST_AUTO_TEST_CASE
66 (fastest_icl_left_open_interval_4_ordered_types_singelizable)
67 {         singelizable_interval_4_ordered_types<left_open_interval<signed_discrete_type_1> >(); }
68 
BOOST_AUTO_TEST_CASE(fastest_icl_left_open_interval_4_bicremental_types)69 BOOST_AUTO_TEST_CASE
70 (fastest_icl_left_open_interval_4_bicremental_types)
71 {         singelizable_interval_4_bicremental_types<left_open_interval<discrete_type_4> >(); }
72 
73 //- coverables -----------------------------------------------------------------
BOOST_AUTO_TEST_CASE(fastest_cover_right_open_interval_4_bicremental_types)74 BOOST_AUTO_TEST_CASE
75 (fastest_cover_right_open_interval_4_bicremental_types)
76 {    coverable_asymmetric_interval_4_bicremental_types<right_open_interval<numeric_continuous_type_1> >(); }
77 
BOOST_AUTO_TEST_CASE(fastest_cover_left_open_interval_4_bicremental_types)78 BOOST_AUTO_TEST_CASE
79 (fastest_cover_left_open_interval_4_bicremental_types)
80 {    coverable_asymmetric_interval_4_bicremental_types<left_open_interval<numeric_continuous_type_3> >(); }
81 
82 //- dyn.dis --------------------------------------------------------------------
BOOST_AUTO_TEST_CASE(fastest_icl_discrete_interval_ctor_4_discrete_types_base)83 BOOST_AUTO_TEST_CASE
84 (fastest_icl_discrete_interval_ctor_4_discrete_types_base)
85 {                     interval_ctor_4_ordered_types<discrete_interval<discrete_type_1> >(); }
86 
BOOST_AUTO_TEST_CASE(fastest_icl_discrete_interval_ctor_4_discrete_types_dynamic)87 BOOST_AUTO_TEST_CASE
88 (fastest_icl_discrete_interval_ctor_4_discrete_types_dynamic)
89 {             dynamic_interval_ctor_4_ordered_types<discrete_interval<discrete_type_2> >(); }
90 
BOOST_AUTO_TEST_CASE(fastest_icl_discrete_interval_4_ordered_types)91 BOOST_AUTO_TEST_CASE
92 (fastest_icl_discrete_interval_4_ordered_types)
93 {        singelizable_interval_4_ordered_types<discrete_interval<discrete_type_3> >(); }
94 
BOOST_AUTO_TEST_CASE(fastest_icl_discrete_interval_4_bicremental_types)95 BOOST_AUTO_TEST_CASE
96 (fastest_icl_discrete_interval_4_bicremental_types)
97 {        singelizable_interval_4_bicremental_types<discrete_interval<discrete_type_3> >(); }
98 
99 //- dyn.con --------------------------------------------------------------------
BOOST_AUTO_TEST_CASE(fastest_icl_continuous_interval_ctor_4_continuous_types_base)100 BOOST_AUTO_TEST_CASE
101 (fastest_icl_continuous_interval_ctor_4_continuous_types_base)
102 {                       interval_ctor_4_ordered_types<continuous_interval<continuous_type_1> >(); }
103 
BOOST_AUTO_TEST_CASE(fastest_icl_continuous_interval_ctor_4_continuous_types_dynamic)104 BOOST_AUTO_TEST_CASE
105 (fastest_icl_continuous_interval_ctor_4_continuous_types_dynamic)
106 {               dynamic_interval_ctor_4_ordered_types<continuous_interval<continuous_type_2> >(); }
107 
BOOST_AUTO_TEST_CASE(fastest_icl_continuous_interval_4_continuous_types_singelizable)108 BOOST_AUTO_TEST_CASE
109 (fastest_icl_continuous_interval_4_continuous_types_singelizable)
110 {          singelizable_interval_4_ordered_types<continuous_interval<continuous_type_3> >(); }
111 
112 //------------------------------------------------------------------------------
113 
BOOST_AUTO_TEST_CASE(fastest_icl_distant_intervals_4_discrete_types)114 BOOST_AUTO_TEST_CASE
115 (fastest_icl_distant_intervals_4_discrete_types)
116 {            distant_intervals_4_discrete_types<discrete_type_1, std::less>(); }
117 
BOOST_AUTO_TEST_CASE(fastest_icl_distant_intervals_4_numeric_continuous_types)118 BOOST_AUTO_TEST_CASE
119 (fastest_icl_distant_intervals_4_numeric_continuous_types)
120 {            distant_intervals_4_numeric_continuous_types<numeric_continuous_type_1, std::less>(); }
121 
122 //------------------------------------------------------------------------------
BOOST_AUTO_TEST_CASE(fastest_icl_dynamic_interval_bounds_4_bicremental_types)123 BOOST_AUTO_TEST_CASE
124 (fastest_icl_dynamic_interval_bounds_4_bicremental_types)
125 {            dynamic_interval_bounds_4_bicremental_types<bicremental_type_2>(); }
126 
127 //==============================================================================
128 //==============================================================================
BOOST_AUTO_TEST_CASE(fastest_icl_interval_equal_4_integral_types)129 BOOST_AUTO_TEST_CASE
130 (fastest_icl_interval_equal_4_integral_types)
131 {            interval_equal_4_integral_types<integral_type_2>(); }
132 
BOOST_AUTO_TEST_CASE(fastest_icl_interval_less_4_integral_types)133 BOOST_AUTO_TEST_CASE
134 (fastest_icl_interval_less_4_integral_types)
135 {            interval_less_4_integral_types<integral_type_3>(); }
136 
BOOST_AUTO_TEST_CASE(fastest_icl_interval_touches_4_bicremental_types)137 BOOST_AUTO_TEST_CASE
138 (fastest_icl_interval_touches_4_bicremental_types)
139 {            interval_touches_4_bicremental_types<bicremental_type_1>(); }
140 
BOOST_AUTO_TEST_CASE(fastest_icl_interval_touches_4_integral_types)141 BOOST_AUTO_TEST_CASE
142 (fastest_icl_interval_touches_4_integral_types)
143 {            interval_touches_4_integral_types<integral_type_4>(); }
144 
145 #ifndef BOOST_ICL_USE_STATIC_BOUNDED_INTERVALS
146 
BOOST_AUTO_TEST_CASE(fastest_icl_interval_ctor_specific)147 BOOST_AUTO_TEST_CASE
148 (fastest_icl_interval_ctor_specific)
149 {            interval_ctor_specific(); }
150 
BOOST_AUTO_TEST_CASE(fastest_icl_interval_equal_4_bicremental_continuous_types)151 BOOST_AUTO_TEST_CASE
152 (fastest_icl_interval_equal_4_bicremental_continuous_types)
153 {            interval_equal_4_bicremental_continuous_types<bicremental_continuous_type_1>(); }
154 
BOOST_AUTO_TEST_CASE(fastest_icl_interval_infix_intersect_4_bicremental_types)155 BOOST_AUTO_TEST_CASE
156 (fastest_icl_interval_infix_intersect_4_bicremental_types)
157 {            interval_infix_intersect_4_bicremental_types<bicremental_type_4>(); }
158 
159 #else
160 
BOOST_AUTO_TEST_CASE(fastest_icl_interval_infix_intersect_4_bicremental_types)161 BOOST_AUTO_TEST_CASE
162 (fastest_icl_interval_infix_intersect_4_bicremental_types)
163 {            interval_infix_intersect_4_bicremental_types<discrete_type_2>(); }
164 
BOOST_AUTO_TEST_CASE(fastest_icl_interval_subtract_4_bicremental_types)165 BOOST_AUTO_TEST_CASE
166 (fastest_icl_interval_subtract_4_bicremental_types)
167 {            interval_subtract_4_bicremental_types<bicremental_type_5>(); }
168 
169 #endif // ndef BOOST_ICL_USE_STATIC_BOUNDED_INTERVALS
170