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_QUANTIFIER_ICL_MAP_HPP_JOFA_090119
9 #define LIBS_ICL_TEST_TEST_QUANTIFIER_ICL_MAP_HPP_JOFA_090119
10
11
12 //------------------------------------------------------------------------------
13 // Monoid EAN
14 //------------------------------------------------------------------------------
15 template <class T, class U, class Trt,
16 ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap>
itv_quantifier_check_monoid_plus_4_bicremental_types()17 void itv_quantifier_check_monoid_plus_4_bicremental_types()
18 {
19 typedef IntervalMap<T,U,Trt> IntervalMapT;
20 typedef icl::map<T,U,Trt> MapT;
21
22 IntervalMapT itv_map_a, itv_map_b, itv_map_c;
23 itv_map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
24 itv_map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
25 itv_map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
26
27 MapT map_a, map_b, map_c;
28 segmental::atomize(map_a, itv_map_a);
29 segmental::atomize(map_b, itv_map_b);
30 segmental::atomize(map_c, itv_map_c);
31
32 typename MapT::value_type map_pair1 = sK_v(5,1);
33 typename MapT::value_type map_pair2 = sK_v(9,3);
34
35 CHECK_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, map_pair1, map_pair2);
36 CHECK_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, map_pair1, map_pair2);
37 }
38
39
40 template <class T, class U, class Trt,
41 ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap>
itv_quantifier_check_monoid_et_4_bicremental_types()42 void itv_quantifier_check_monoid_et_4_bicremental_types()
43 {
44 typedef IntervalMap<T,U,Trt> IntervalMapT;
45 typedef icl::map<T,U,Trt> MapT;
46
47 IntervalMapT itv_map_a, itv_map_b, itv_map_c;
48 itv_map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
49 itv_map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
50 itv_map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
51
52 MapT map_a, map_b, map_c;
53 segmental::atomize(map_a, itv_map_a);
54 segmental::atomize(map_b, itv_map_b);
55 segmental::atomize(map_c, itv_map_c);
56
57 typename MapT::value_type map_pair1 = sK_v(5,1);
58 typename MapT::value_type map_pair2 = sK_v(9,3);
59
60 CHECK_MONOID_INSTANCE_WRT(et) (map_a, map_b, map_c, map_pair1, map_pair2);
61 CHECK_MONOID_INSTANCE_WRT(caret)(map_a, map_b, map_c, map_pair1, map_pair2);
62 }
63
64 //------------------------------------------------------------------------------
65 // Abelian monoid EANC
66 //------------------------------------------------------------------------------
67
68 template <class T, class U, class Trt,
69 ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap>
itv_quantifier_check_abelian_monoid_plus_4_bicremental_types()70 void itv_quantifier_check_abelian_monoid_plus_4_bicremental_types()
71 {
72 typedef IntervalMap<T,U,Trt> IntervalMapT;
73 typedef icl::map<T,U,Trt> MapT;
74
75 IntervalMapT itv_map_a, itv_map_b, itv_map_c;
76 itv_map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
77 itv_map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
78 itv_map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
79
80 MapT map_a, map_b, map_c;
81 segmental::atomize(map_a, itv_map_a);
82 segmental::atomize(map_b, itv_map_b);
83 segmental::atomize(map_c, itv_map_c);
84
85 typename MapT::value_type map_pair1 = sK_v(5,1);
86 typename MapT::value_type map_pair2 = sK_v(9,3);
87
88 CHECK_ABELIAN_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, map_pair1, map_pair2);
89 CHECK_ABELIAN_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, map_pair1, map_pair2);
90 }
91
92
93 template <class T, class U, class Trt,
94 ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap>
itv_quantifier_check_abelian_monoid_et_4_bicremental_types()95 void itv_quantifier_check_abelian_monoid_et_4_bicremental_types()
96 {
97 typedef IntervalMap<T,U,Trt> IntervalMapT;
98 typedef icl::map<T,U,Trt> MapT;
99
100 IntervalMapT itv_map_a, itv_map_b, itv_map_c;
101 itv_map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
102 itv_map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
103 itv_map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
104
105 MapT map_a, map_b, map_c;
106 segmental::atomize(map_a, itv_map_a);
107 segmental::atomize(map_b, itv_map_b);
108 segmental::atomize(map_c, itv_map_c);
109
110 typename MapT::value_type map_pair1 = sK_v(5,1);
111 typename MapT::value_type map_pair2 = sK_v(9,3);
112
113 CHECK_ABELIAN_MONOID_INSTANCE_WRT(et) (map_a, map_b, map_c, map_pair1, map_pair2);
114 CHECK_ABELIAN_MONOID_INSTANCE_WRT(caret)(map_a, map_b, map_c, map_pair1, map_pair2);
115 }
116
117
118 //------------------------------------------------------------------------------
119 // Abelian partial invertive monoid
120 //------------------------------------------------------------------------------
121 template <class T, class U, class Trt,
122 ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap>
itv_quantifier_check_partial_invertive_monoid_plus_4_bicremental_types()123 void itv_quantifier_check_partial_invertive_monoid_plus_4_bicremental_types()
124 {
125 typedef IntervalMap<T,U,Trt> IntervalMapT;
126 typedef icl::map<T,U,Trt> MapT;
127
128 IntervalMapT itv_map_a, itv_map_b, itv_map_c;
129 itv_map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
130 itv_map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
131 itv_map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
132
133 MapT map_a, map_b, map_c;
134 segmental::atomize(map_a, itv_map_a);
135 segmental::atomize(map_b, itv_map_b);
136 segmental::atomize(map_c, itv_map_c);
137
138 typename MapT::value_type map_pair1 = sK_v(5,1);
139 typename MapT::value_type map_pair2 = sK_v(9,3);
140
141 CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, map_pair1, map_pair2);
142 CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, map_pair1, map_pair2);
143 }
144
145 //------------------------------------------------------------------------------
146 // Abelian partial invertive monoid with distinct equality for inversion
147 //------------------------------------------------------------------------------
148 template <class T, class U, class Trt,
149 ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap>
itv_quantifier_check_partial_invertive_monoid_plus_prot_inv_4_bicremental_types()150 void itv_quantifier_check_partial_invertive_monoid_plus_prot_inv_4_bicremental_types()
151 {
152 typedef IntervalMap<T,U,Trt> IntervalMapT;
153 typedef icl::map<T,U,Trt> MapT;
154
155 IntervalMapT itv_map_a, itv_map_b, itv_map_c;
156 itv_map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
157 itv_map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
158 itv_map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
159
160 MapT map_a, map_b, map_c;
161 segmental::atomize(map_a, itv_map_a);
162 segmental::atomize(map_b, itv_map_b);
163 segmental::atomize(map_c, itv_map_c);
164
165 typename MapT::value_type map_pair1 = sK_v(5,1);
166 typename MapT::value_type map_pair2 = sK_v(9,3);
167
168 CHECK_ABELIAN_MONOID_INSTANCE_WRT(plus)(map_a, map_b, map_c, map_pair1, map_pair2);
169 CHECK_ABELIAN_MONOID_INSTANCE_WRT(pipe)(map_a, map_b, map_c, map_pair1, map_pair2);
170
171 #if !defined(_MSC_VER) || (_MSC_VER >= 1400) // 1310==MSVC-7.1 1400 ==MSVC-8.0
172 CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT_EQUAL(plus)(is_distinct_equal, map_a, map_b, map_c, map_pair1, map_pair2);
173 CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT_EQUAL(pipe)(is_distinct_equal, map_a, map_b, map_c, map_pair1, map_pair2);
174 #endif
175 }
176
177
178 //------------------------------------------------------------------------------
179 // Abelian group EANIC
180 //------------------------------------------------------------------------------
181 template <class T, class U, class Trt,
182 ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap>
itv_quantifier_check_abelian_group_plus_4_bicremental_types()183 void itv_quantifier_check_abelian_group_plus_4_bicremental_types()
184 {
185 typedef IntervalMap<T,U,Trt> IntervalMapT;
186 typedef icl::map<T,U,Trt> MapT;
187
188 IntervalMapT itv_map_a, itv_map_b, itv_map_c;
189 itv_map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
190 itv_map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
191 itv_map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
192
193 MapT map_a, map_b, map_c;
194 segmental::atomize(map_a, itv_map_a);
195 segmental::atomize(map_b, itv_map_b);
196 segmental::atomize(map_c, itv_map_c);
197
198 typename MapT::value_type map_pair1 = sK_v(5,1);
199 typename MapT::value_type map_pair2 = sK_v(9,3);
200
201 CHECK_ABELIAN_GROUP_INSTANCE_WRT(plus) (map_a, map_b, map_c, map_pair1, map_pair2);
202 CHECK_ABELIAN_GROUP_INSTANCE_WRT(pipe) (map_a, map_b, map_c, map_pair1, map_pair2);
203 }
204
205 //------------------------------------------------------------------------------
206 // (0 - x) + x =d= 0 |
207 //------------------------------------------------------------------------------
208 template <class T, class U, class Trt,
209 ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap>
itv_quantifier_check_abelian_group_plus_prot_inv_4_bicremental_types()210 void itv_quantifier_check_abelian_group_plus_prot_inv_4_bicremental_types()
211 {
212 typedef IntervalMap<T,U,Trt> IntervalMapT;
213 typedef icl::map<T,U,Trt> MapT;
214
215 IntervalMapT itv_map_a, itv_map_b, itv_map_c;
216 itv_map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
217 itv_map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
218 itv_map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
219
220 MapT map_a, map_b, map_c;
221 segmental::atomize(map_a, itv_map_a);
222 segmental::atomize(map_b, itv_map_b);
223 segmental::atomize(map_c, itv_map_c);
224
225 typename MapT::value_type map_pair1 = sK_v(5,1);
226 typename MapT::value_type map_pair2 = sK_v(9,3);
227
228 CHECK_ABELIAN_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, map_pair1, map_pair2);
229 CHECK_ABELIAN_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, map_pair1, map_pair2);
230
231 #if !defined(_MSC_VER) || (_MSC_VER >= 1400) // 1310==MSVC-7.1 1400 ==MSVC-8.0
232 CHECK_ABELIAN_GROUP_INSTANCE_WRT_EQUAL(plus) (is_distinct_equal, map_a, map_b, map_c, map_pair1, map_pair2);
233 CHECK_ABELIAN_GROUP_INSTANCE_WRT_EQUAL(pipe) (is_distinct_equal, map_a, map_b, map_c, map_pair1, map_pair2);
234 #endif
235 }
236
237 #endif // LIBS_ICL_TEST_TEST_QUANTIFIER_ICL_MAP_HPP_JOFA_090119
238
239