]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/icl/test/test_quantifier_map_shared.hpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / icl / test / test_quantifier_map_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_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>
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>
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>
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>
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>
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>
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>
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>
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