1/*-----------------------------------------------------------------------------+
2Copyright (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 __TEST_INTERVAL_QUANTIFIER_SHARED_H_JOFA_090119__
9#define __TEST_INTERVAL_QUANTIFIER_SHARED_H_JOFA_090119__
10
11#include "portability.hpp"
12
13template
14<
15 class T, class U, class Trt,
16#if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
17 ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
18#else
19 ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
20#endif
21>
22void make_3_itv_maps_and_derivatives_1
23 (ICL_PORT_msvc_7_1_IntervalMap(T,U,Trt)& itv_map_a,
24 ICL_PORT_msvc_7_1_IntervalMap(T,U,Trt)& itv_map_b,
25 ICL_PORT_msvc_7_1_IntervalMap(T,U,Trt)& itv_map_c,
26 typename ICL_PORT_msvc_7_1_IntervalMap(T,U,Trt)::interval_mapping_type& val_pair,
27 mapping_pair<T,U>& map_pair)
28{
29 typedef IntervalMap<T,U,Trt> IntervalMapT;
30
31 itv_map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
32 itv_map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
33 itv_map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
34
35 val_pair = IDv(6,9,1);
36 map_pair = K_v(5,1);
37}
38
39
40//------------------------------------------------------------------------------
41// Monoid EAN
42//------------------------------------------------------------------------------
43template
44<
45 class T, class U, class Trt,
46#if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
47 ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
48#else
49 ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
50#endif
51>
52void itv_quantifier_check_monoid_plus_4_bicremental_types()
53{
54 typedef IntervalMap<T,U,Trt> IntervalMapT;
55 IntervalMapT map_a, map_b, map_c;
56 typename IntervalMapT::interval_mapping_type val_pair;
57 mapping_pair<T,U> map_pair;
58 make_3_itv_maps_and_derivatives_1(map_a, map_b, map_c, val_pair, map_pair);
59
60 CHECK_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, val_pair, map_pair);
61 CHECK_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, val_pair, map_pair);
62}
63
64
65template
66<
67 class T, class U, class Trt,
68#if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
69 ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
70#else
71 ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
72#endif
73>
74void itv_quantifier_check_monoid_et_4_bicremental_types()
75{
76 typedef IntervalMap<T,U,Trt> IntervalMapT;
77 IntervalMapT map_a, map_b, map_c;
78 typename IntervalMapT::interval_mapping_type val_pair;
79 mapping_pair<T,U> map_pair;
80 make_3_itv_maps_and_derivatives_1(map_a, map_b, map_c, val_pair, map_pair);
81
82 CHECK_MONOID_INSTANCE_WRT(et) (map_a, map_b, map_c, val_pair, map_pair);
83 CHECK_MONOID_INSTANCE_WRT(caret)(map_a, map_b, map_c, val_pair, map_pair);
84}
85
86//------------------------------------------------------------------------------
87// Abelian monoid EANC
88//------------------------------------------------------------------------------
89
90template
91<
92 class T, class U, class Trt,
93#if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
94 ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
95#else
96 ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
97#endif
98>
99void itv_quantifier_check_abelian_monoid_plus_4_bicremental_types()
100{
101 typedef IntervalMap<T,U,Trt> IntervalMapT;
102 IntervalMapT map_a, map_b, map_c;
103 typename IntervalMapT::interval_mapping_type val_pair;
104 mapping_pair<T,U> map_pair;
105 make_3_itv_maps_and_derivatives_1(map_a, map_b, map_c, val_pair, map_pair);
106
107 CHECK_ABELIAN_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, val_pair, map_pair);
108 CHECK_ABELIAN_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, val_pair, map_pair);
109}
110
111
112template
113<
114 class T, class U, class Trt,
115#if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
116 ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
117#else
118 ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
119#endif
120>
121void itv_quantifier_check_abelian_monoid_et_4_bicremental_types()
122{
123 typedef IntervalMap<T,U,Trt> IntervalMapT;
124 IntervalMapT map_a, map_b, map_c;
125 typename IntervalMapT::interval_mapping_type val_pair;
126 mapping_pair<T,U> map_pair;
127 make_3_itv_maps_and_derivatives_1(map_a, map_b, map_c, val_pair, map_pair);
128
129 CHECK_ABELIAN_MONOID_INSTANCE_WRT(et) (map_a, map_b, map_c, val_pair, map_pair);
130 CHECK_ABELIAN_MONOID_INSTANCE_WRT(caret)(map_a, map_b, map_c, val_pair, map_pair);
131}
132
133
134//------------------------------------------------------------------------------
135// Abelian partial invertive monoid
136//------------------------------------------------------------------------------
137template
138<
139 class T, class U, class Trt,
140#if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
141 ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
142#else
143 ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
144#endif
145>
146void itv_quantifier_check_partial_invertive_monoid_plus_4_bicremental_types()
147{
148 typedef IntervalMap<T,U,Trt> IntervalMapT;
149 IntervalMapT map_a, map_b, map_c;
150 typename IntervalMapT::interval_mapping_type val_pair;
151 mapping_pair<T,U> map_pair;
152 make_3_itv_maps_and_derivatives_1(map_a, map_b, map_c, val_pair, map_pair);
153
154 CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, val_pair, map_pair);
155 CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, val_pair, map_pair);
156}
157
158//------------------------------------------------------------------------------
159// Abelian partial invertive monoid with distinct equality for inversion
160//------------------------------------------------------------------------------
161template
162<
163 class T, class U, class Trt,
164#if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
165 ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
166#else
167 ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
168#endif
169>
170void itv_quantifier_check_partial_invertive_monoid_plus_prot_inv_4_bicremental_types()
171{
172 typedef IntervalMap<T,U,Trt> IntervalMapT;
173 IntervalMapT map_a, map_b, map_c;
174 typename IntervalMapT::interval_mapping_type val_pair;
175 mapping_pair<T,U> map_pair;
176 make_3_itv_maps_and_derivatives_1(map_a, map_b, map_c, val_pair, map_pair);
177
178 CHECK_ABELIAN_MONOID_INSTANCE_WRT(plus)(map_a, map_b, map_c, val_pair, map_pair);
179 CHECK_ABELIAN_MONOID_INSTANCE_WRT(pipe)(map_a, map_b, map_c, val_pair, map_pair);
180
181#if !defined(_MSC_VER) || (_MSC_VER >= 1400) // 1310==MSVC-7.1 1400 ==MSVC-8.0
182 CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT_EQUAL(plus)(is_distinct_equal, map_a, map_b, map_c, val_pair, map_pair);
183 CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT_EQUAL(pipe)(is_distinct_equal, map_a, map_b, map_c, val_pair, map_pair);
184#endif
185}
186
187
188//------------------------------------------------------------------------------
189// Abelian group EANIC
190//------------------------------------------------------------------------------
191template
192<
193 class T, class U, class Trt,
194#if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
195 ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
196#else
197 ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
198#endif
199>
200void itv_quantifier_check_abelian_group_plus_4_bicremental_types()
201{
202 typedef IntervalMap<T,U,Trt> IntervalMapT;
203 IntervalMapT map_a, map_b, map_c;
204 typename IntervalMapT::interval_mapping_type val_pair;
205 mapping_pair<T,U> map_pair;
206 make_3_itv_maps_and_derivatives_1(map_a, map_b, map_c, val_pair, map_pair);
207
208 CHECK_ABELIAN_GROUP_INSTANCE_WRT(plus) (map_a, map_b, map_c, val_pair, map_pair);
209 CHECK_ABELIAN_GROUP_INSTANCE_WRT(pipe) (map_a, map_b, map_c, val_pair, map_pair);
210}
211
212//------------------------------------------------------------------------------
213// (0 - x) + x =d= 0
214//------------------------------------------------------------------------------
215template
216<
217 class T, class U, class Trt,
218#if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
219 ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
220#else
221 ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
222#endif
223>
224void itv_quantifier_check_abelian_group_plus_prot_inv_4_bicremental_types()
225{
226 // check abelian group wrt. + and inverability wrt. distinct equality =d= :
227 // (1) (IntervalMapT, +) is an abelian group and
228 // (2) The inverability law: (0 - x) + x =d= 0 holds.
229 typedef IntervalMap<T,U,Trt> IntervalMapT;
230 IntervalMapT map_a, map_b, map_c;
231 typename IntervalMapT::interval_mapping_type val_pair;
232 mapping_pair<T,U> map_pair;
233 make_3_itv_maps_and_derivatives_1(map_a, map_b, map_c, val_pair, map_pair);
234
235 CHECK_ABELIAN_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, val_pair, map_pair);
236 CHECK_ABELIAN_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, val_pair, map_pair);
237
238#if !defined(_MSC_VER) || (_MSC_VER >= 1400) // 1310==MSVC-7.1 1400 ==MSVC-8.0
239 CHECK_ABELIAN_GROUP_INSTANCE_WRT_EQUAL(plus) (is_distinct_equal, map_a, map_b, map_c, val_pair, map_pair);
240 CHECK_ABELIAN_GROUP_INSTANCE_WRT_EQUAL(pipe) (is_distinct_equal, map_a, map_b, map_c, val_pair, map_pair);
241#endif
242}
243
244
245//------------------------------------------------------------------------------
246// Inner complement
247//------------------------------------------------------------------------------
248template
249<
250 class T, class U, class Trt,
251#if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
252 ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
253#else
254 ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
255#endif
256>
257void itv_quantifier_check_inner_complementarity_4_bicremental_types()
258{
259 typedef IntervalMap<T,U,Trt> IntervalMapT;
260 typedef typename IntervalMap<T,U,Trt>::set_type IntervalSetT;
261 IntervalMapT map_a, map_b, map_c;
262 typename IntervalMapT::interval_mapping_type val_pair;
263 mapping_pair<T,U> map_pair;
264 make_3_itv_maps_and_derivatives_1(map_a, map_b, map_c, val_pair, map_pair);
265
266 has_inner_complementarity<IntervalMapT,IntervalSetT>(map_a);
267 has_inner_complementarity<IntervalMapT,IntervalSetT>(map_b);
268 has_inner_complementarity<IntervalMapT,IntervalSetT>(map_c);
269}
270
271template
272<
273 class T, class U, class Trt,
274#if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
275 ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
276#else
277 ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
278#endif
279>
280void itv_quantifier_check_length_complementarity_4_bicremental_types()
281{
282 typedef IntervalMap<T,U,Trt> IntervalMapT;
283 typedef typename IntervalMap<T,U,Trt>::set_type IntervalSetT;
284 IntervalMapT map_a, map_b, map_c;
285 typename IntervalMapT::interval_mapping_type val_pair;
286 mapping_pair<T,U> map_pair;
287 make_3_itv_maps_and_derivatives_1(map_a, map_b, map_c, val_pair, map_pair);
288
289 has_length_complementarity(map_a);
290 has_length_complementarity(map_b);
291 has_length_complementarity(map_c);
292
293 has_length_as_distance<IntervalMapT,IntervalSetT>(map_a);
294 has_length_as_distance<IntervalMapT,IntervalSetT>(map_b);
295 has_length_as_distance<IntervalMapT,IntervalSetT>(map_c);
296}
297
298
299
300#endif // __TEST_INTERVAL_QUANTIFIER_SHARED_H_JOFA_090119__
301
302

source code of boost/libs/icl/test/test_interval_quantifier_shared.hpp