• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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