]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/icl/test/test_set_interval_set_shared.hpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / icl / test / test_set_interval_set_shared.hpp
1 /*-----------------------------------------------------------------------------+
2 Copyright (c) 2008-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 #ifndef LIBS_ICL_TEST_TEST_SET_INTERVAL_SET_SHARED_HPP_JOFA_090119
9 #define LIBS_ICL_TEST_TEST_SET_INTERVAL_SET_SHARED_HPP_JOFA_090119
10
11 #include "portability.hpp"
12
13 template <class T, ICL_IntervalSet_TEMPLATE(_T) IntervalSet>
14 void make_3_interval_sets_and_derivatives_1
15 (ICL_PORT_msvc_7_1_IntervalSet(T)& set_a,
16 ICL_PORT_msvc_7_1_IntervalSet(T)& set_b,
17 ICL_PORT_msvc_7_1_IntervalSet(T)& set_c,
18 typename ICL_PORT_msvc_7_1_IntervalSet(T)::segment_type& segm_d,
19 typename ICL_PORT_msvc_7_1_IntervalSet(T)::element_type& elem_e)
20 {
21 typedef IntervalSet<T> IntervalSetT;
22 typedef typename IntervalSetT::segment_type IntervalT;
23 typedef typename IntervalSetT::segment_type segment_type;
24 typedef typename IntervalSetT::element_type element_type;
25
26 segm_d = I_D(6,9);
27 elem_e = MK_v(5);
28
29 set_a.add(I_D(3,6)).add(I_I(5,7));
30 set_b.add(C_D(1,3)).add(I_D(8,9));
31 set_c.add(I_D(0,9)).add(I_I(3,6)).add(I_D(5,7));
32 }
33
34
35
36 //------------------------------------------------------------------------------
37 // Monoid EAN
38 //------------------------------------------------------------------------------
39 template <class T, ICL_IntervalSet_TEMPLATE(_T) IntervalSet>
40 void interval_set_check_monoid_plus_4_bicremental_types()
41 {
42 typedef IntervalSet<T> IntervalSetT;
43 typedef typename IntervalSetT::interval_type IntervalT;
44
45 IntervalSetT set_a, set_b, set_c;
46 set_a.add(I_D(3,6)).add(I_I(5,7));
47 set_b.add(C_D(1,3)).add(I_D(8,9));
48 set_c.add(I_D(0,9)).add(I_I(3,6)).add(I_D(5,7));
49
50 typename IntervalSetT::segment_type inter_val1 = I_D(6,9);
51 typename IntervalSetT::segment_type inter_val2 = I_I(5,5);
52
53 CHECK_MONOID_INSTANCE_WRT(plus) (set_a, set_b, set_c, inter_val1, inter_val2);
54 CHECK_MONOID_INSTANCE_WRT(pipe) (set_a, set_b, set_c, inter_val1, inter_val2);
55 }
56
57 template <class T, ICL_IntervalSet_TEMPLATE(_T) IntervalSet>
58 void interval_set_check_monoid_et_4_bicremental_types()
59 {
60 typedef IntervalSet<T> IntervalSetT;
61 typedef typename IntervalSetT::interval_type IntervalT;
62
63 IntervalSetT set_a, set_b, set_c;
64 set_a.add(I_D(3,6)).add(I_I(5,7));
65 set_b.add(C_D(1,3)).add(I_D(8,9));
66 set_c.add(I_D(0,9)).add(I_I(3,6)).add(I_D(5,7));
67
68 typename IntervalSetT::segment_type inter_val1 = I_D(6,9);
69 typename IntervalSetT::segment_type inter_val2 = I_I(5,5);
70
71 CHECK_MONOID_INSTANCE_WRT(et) (set_a, set_b, set_c, inter_val1, inter_val2);
72 CHECK_MONOID_INSTANCE_WRT(caret)(set_a, set_b, set_c, inter_val1, inter_val2);
73 }
74
75 //------------------------------------------------------------------------------
76 // Abelian monoid EANC
77 //------------------------------------------------------------------------------
78
79 template <class T, ICL_IntervalSet_TEMPLATE(_T) IntervalSet>
80 void interval_set_check_abelian_monoid_plus_4_bicremental_types()
81 {
82 typedef IntervalSet<T> IntervalSetT;
83 typedef typename IntervalSetT::interval_type IntervalT;
84
85 IntervalSetT set_a, set_b, set_c;
86 set_a.add(I_D(3,6)).add(I_I(5,7));
87 set_b.add(C_D(1,3)).add(I_D(8,9));
88 set_c.add(I_D(0,9)).add(I_I(3,6)).add(I_D(5,7));
89
90 typename IntervalSetT::segment_type inter_val1 = I_D(6,9);
91 typename IntervalSetT::segment_type inter_val2 = I_I(5,5);
92
93 CHECK_ABELIAN_MONOID_INSTANCE_WRT(plus) (set_a, set_b, set_c, inter_val1, inter_val2);
94 CHECK_ABELIAN_MONOID_INSTANCE_WRT(pipe) (set_a, set_b, set_c, inter_val1, inter_val2);
95 }
96
97 template <class T, ICL_IntervalSet_TEMPLATE(_T) IntervalSet>
98 void interval_set_check_abelian_monoid_et_4_bicremental_types()
99 {
100 typedef IntervalSet<T> IntervalSetT;
101 typedef typename IntervalSetT::interval_type IntervalT;
102
103 IntervalSetT set_a, set_b, set_c;
104 set_a.add(I_D(3,6)).add(I_I(5,7));
105 set_b.add(C_D(1,3)).add(I_D(8,9));
106 set_c.add(I_D(0,9)).add(I_I(3,6)).add(I_D(5,7));
107
108 typename IntervalSetT::segment_type inter_val1 = I_D(6,9);
109 typename IntervalSetT::segment_type inter_val2 = I_I(5,5);
110
111 CHECK_ABELIAN_MONOID_INSTANCE_WRT(et) (set_a, set_b, set_c, inter_val1, inter_val2);
112 CHECK_ABELIAN_MONOID_INSTANCE_WRT(caret)(set_a, set_b, set_c, inter_val1, inter_val2);
113 }
114
115
116 //------------------------------------------------------------------------------
117 // Abelian partial invertive monoid
118 //------------------------------------------------------------------------------
119 template <class T, ICL_IntervalSet_TEMPLATE(_T) IntervalSet>
120 void interval_set_check_partial_invertive_monoid_plus_4_bicremental_types()
121 {
122 typedef IntervalSet<T> IntervalSetT;
123 typedef typename IntervalSetT::interval_type IntervalT;
124
125 IntervalSetT set_a, set_b, set_c;
126 set_a.add(I_D(3,6)).add(I_I(5,7));
127 set_b.add(C_D(1,3)).add(I_D(8,9));
128 set_c.add(I_D(0,9)).add(I_I(3,6)).add(I_D(5,7));
129
130 typename IntervalSetT::segment_type inter_val1 = I_D(6,9);
131 typename IntervalSetT::segment_type inter_val2 = I_I(5,5);
132
133 CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT(plus) (set_a, set_b, set_c, inter_val1, inter_val2);
134 CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT(pipe) (set_a, set_b, set_c, inter_val1, inter_val2);
135 }
136
137
138 //------------------------------------------------------------------------------
139 // Containedness
140 //------------------------------------------------------------------------------
141 template <class T, ICL_IntervalSet_TEMPLATE(_T) IntervalSet>
142 void interval_set_check_containedness_4_bicremental_types()
143 {
144 typedef IntervalSet<T> IntervalSetT;
145 typedef typename IntervalSetT::segment_type segment_type;
146 typedef typename IntervalSetT::element_type element_type;
147
148 IntervalSetT set_a, set_b, set_c;
149 segment_type segm_d;
150 element_type elem_e;
151 make_3_interval_sets_and_derivatives_1(set_a, set_b, set_c, segm_d, elem_e);
152
153 check_intersection_containedness(set_a, set_c);
154 check_intersection_containedness(set_b, segm_d);
155 check_intersection_containedness(set_c, elem_e);
156
157 check_union_containedness(set_c, set_c);
158 check_union_containedness(set_b, segm_d);
159 check_union_containedness(set_a, elem_e);
160 }
161
162
163 //------------------------------------------------------------------------------
164 // Inner complement
165 //------------------------------------------------------------------------------
166 template <class T, ICL_IntervalSet_TEMPLATE(_T) IntervalSet>
167 void interval_set_check_inner_complementarity_4_bicremental_types()
168 {
169 typedef IntervalSet<T> IntervalSetT;
170 typedef typename IntervalSetT::segment_type segment_type;
171 typedef typename IntervalSetT::element_type element_type;
172
173 IntervalSetT set_a, set_b, set_c;
174 segment_type segm_d;
175 element_type elem_e;
176 make_3_interval_sets_and_derivatives_1(set_a, set_b, set_c, segm_d, elem_e);
177
178 has_inner_complementarity<IntervalSetT,IntervalSetT>(set_a);
179 has_inner_complementarity<IntervalSetT,IntervalSetT>(set_b);
180 has_inner_complementarity<IntervalSetT,IntervalSetT>(set_c);
181 }
182
183 template <class T, ICL_IntervalSet_TEMPLATE(_T) IntervalSet>
184 void interval_set_check_length_complementarity_4_bicremental_types()
185 {
186 typedef IntervalSet<T> IntervalSetT;
187 typedef typename IntervalSetT::segment_type segment_type;
188 typedef typename IntervalSetT::element_type element_type;
189
190 IntervalSetT set_a, set_b, set_c;
191 segment_type segm_d;
192 element_type elem_e;
193 make_3_interval_sets_and_derivatives_1(set_a, set_b, set_c, segm_d, elem_e);
194
195 has_length_complementarity(set_a);
196 has_length_complementarity(set_b);
197 has_length_complementarity(set_c);
198
199 has_length_as_distance<IntervalSetT,IntervalSetT>(set_a);
200 has_length_as_distance<IntervalSetT,IntervalSetT>(set_b);
201 has_length_as_distance<IntervalSetT,IntervalSetT>(set_c);
202 }
203
204 #endif // LIBS_ICL_TEST_TEST_SET_INTERVAL_SET_SHARED_HPP_JOFA_090119
205