• 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_MAP_SHARED_HPP_JOFA_090119
9 #define LIBS_ICL_TEST_TEST_QUANTIFIER_MAP_SHARED_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 
21     IntervalMapT map_a, map_b, map_c;
22     map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
23     map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
24     map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
25 
26     typename IntervalMapT::interval_mapping_type val_pair = IDv(6,9,1);
27     mapping_pair<T,U> map_pair = K_v(5,1);
28 
29     CHECK_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, val_pair, map_pair);
30     CHECK_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, val_pair, map_pair);
31 }
32 
33 
34 template <class T, class U, class Trt,
35           ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap>
itv_quantifier_check_monoid_et_4_bicremental_types()36 void itv_quantifier_check_monoid_et_4_bicremental_types()
37 {
38     typedef IntervalMap<T,U,Trt> IntervalMapT;
39 
40     IntervalMapT map_a, map_b, map_c;
41     map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
42     map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
43     map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
44 
45     typename IntervalMapT::interval_mapping_type val_pair = IDv(6,9,1);
46     mapping_pair<T,U> map_pair = K_v(5,1);
47 
48     CHECK_MONOID_INSTANCE_WRT(et)   (map_a, map_b, map_c, val_pair, map_pair);
49     CHECK_MONOID_INSTANCE_WRT(caret)(map_a, map_b, map_c, val_pair, map_pair);
50 }
51 
52 //------------------------------------------------------------------------------
53 // Abelian monoid EANC
54 //------------------------------------------------------------------------------
55 
56 template <class T, class U, class Trt,
57           ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap>
itv_quantifier_check_abelian_monoid_plus_4_bicremental_types()58 void itv_quantifier_check_abelian_monoid_plus_4_bicremental_types()
59 {
60     typedef IntervalMap<T,U,Trt> IntervalMapT;
61 
62     IntervalMapT map_a, map_b, map_c;
63     map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
64     map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
65     map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
66 
67     typename IntervalMapT::interval_mapping_type val_pair = IDv(6,9,1);
68     mapping_pair<T,U> map_pair = K_v(5,1);
69 
70     CHECK_ABELIAN_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, val_pair, map_pair);
71     CHECK_ABELIAN_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, val_pair, map_pair);
72 }
73 
74 
75 template <class T, class U, class Trt,
76           ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap>
itv_quantifier_check_abelian_monoid_et_4_bicremental_types()77 void itv_quantifier_check_abelian_monoid_et_4_bicremental_types()
78 {
79     typedef IntervalMap<T,U,Trt> IntervalMapT;
80 
81     IntervalMapT map_a, map_b, map_c;
82     map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
83     map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
84     map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
85 
86     typename IntervalMapT::interval_mapping_type val_pair = IDv(6,9,1);
87     mapping_pair<T,U> map_pair = K_v(5,1);
88 
89     CHECK_ABELIAN_MONOID_INSTANCE_WRT(et)   (map_a, map_b, map_c, val_pair, map_pair);
90     CHECK_ABELIAN_MONOID_INSTANCE_WRT(caret)(map_a, map_b, map_c, val_pair, map_pair);
91 }
92 
93 
94 //------------------------------------------------------------------------------
95 // Abelian partial invertive monoid
96 //------------------------------------------------------------------------------
97 template <class T, class U, class Trt,
98           ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap>
itv_quantifier_check_partial_invertive_monoid_plus_4_bicremental_types()99 void itv_quantifier_check_partial_invertive_monoid_plus_4_bicremental_types()
100 {
101     typedef IntervalMap<T,U,Trt> IntervalMapT;
102 
103     IntervalMapT map_a, map_b, map_c;
104     map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
105     map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
106     map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
107 
108     typename IntervalMapT::interval_mapping_type val_pair = IDv(6,9,1);
109     mapping_pair<T,U> map_pair = K_v(5,1);
110 
111     CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, val_pair, map_pair);
112     CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, val_pair, map_pair);
113 }
114 
115 //------------------------------------------------------------------------------
116 // Abelian partial invertive monoid with distinct equality for inversion
117 //------------------------------------------------------------------------------
118 template <class T, class U, class Trt,
119           ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap>
itv_quantifier_check_partial_invertive_monoid_plus_prot_inv_4_bicremental_types()120 void itv_quantifier_check_partial_invertive_monoid_plus_prot_inv_4_bicremental_types()
121 {
122     typedef IntervalMap<T,U,Trt> IntervalMapT;
123 
124     IntervalMapT map_a, map_b, map_c;
125     map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
126     map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
127     map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
128 
129     typename IntervalMapT::interval_mapping_type val_pair = IDv(6,9,1);
130     mapping_pair<T,U> map_pair = K_v(5,1);
131 
132     CHECK_ABELIAN_MONOID_INSTANCE_WRT(plus)(map_a, map_b, map_c, val_pair, map_pair);
133     CHECK_ABELIAN_MONOID_INSTANCE_WRT(pipe)(map_a, map_b, map_c, val_pair, map_pair);
134 
135 #if !defined(_MSC_VER) || (_MSC_VER >= 1400) // 1310==MSVC-7.1  1400 ==MSVC-8.0
136     CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT_EQUAL(plus)(is_distinct_equal, map_a, map_b, map_c, val_pair, map_pair);
137     CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT_EQUAL(pipe)(is_distinct_equal, map_a, map_b, map_c, val_pair, map_pair);
138 #endif
139 }
140 
141 
142 //------------------------------------------------------------------------------
143 // Abelian group EANIC
144 //------------------------------------------------------------------------------
145 template <class T, class U, class Trt,
146           ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap>
itv_quantifier_check_abelian_group_plus_4_bicremental_types()147 void itv_quantifier_check_abelian_group_plus_4_bicremental_types()
148 {
149     typedef IntervalMap<T,U,Trt> IntervalMapT;
150 
151     IntervalMapT map_a, map_b, map_c;
152     map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
153     map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
154     map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
155 
156     typename IntervalMapT::interval_mapping_type val_pair = IDv(6,9,1);
157     mapping_pair<T,U> map_pair = K_v(5,1);
158 
159     CHECK_ABELIAN_GROUP_INSTANCE_WRT(plus) (map_a, map_b, map_c, val_pair, map_pair);
160     CHECK_ABELIAN_GROUP_INSTANCE_WRT(pipe) (map_a, map_b, map_c, val_pair, map_pair);
161 }
162 
163 //------------------------------------------------------------------------------
164 // (0 - x) + x =d= 0  |
165 //------------------------------------------------------------------------------
166 template <class T, class U, class Trt,
167           ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap>
itv_quantifier_check_abelian_group_plus_prot_inv_4_bicremental_types()168 void itv_quantifier_check_abelian_group_plus_prot_inv_4_bicremental_types()
169 {
170     typedef IntervalMap<T,U,Trt> IntervalMapT;
171 
172     IntervalMapT map_a, map_b, map_c;
173     map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
174     map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
175     map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
176 
177     typename IntervalMapT::interval_mapping_type val_pair = IDv(6,9,1);
178     mapping_pair<T,U> map_pair = K_v(5,1);
179 
180     CHECK_ABELIAN_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, val_pair, map_pair);
181     CHECK_ABELIAN_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, val_pair, map_pair);
182 
183 #if !defined(_MSC_VER) || (_MSC_VER >= 1400) // 1310==MSVC-7.1  1400 ==MSVC-8.0
184     CHECK_ABELIAN_GROUP_INSTANCE_WRT_EQUAL(plus) (is_distinct_equal, map_a, map_b, map_c, val_pair, map_pair);
185     CHECK_ABELIAN_GROUP_INSTANCE_WRT_EQUAL(pipe) (is_distinct_equal, map_a, map_b, map_c, val_pair, map_pair);
186 #endif
187 }
188 
189 #endif // LIBS_ICL_TEST_TEST_QUANTIFIER_MAP_SHARED_HPP_JOFA_090119
190 
191