3 #include "set/hdr_feldman_hashset.h"
4 #include <cds/container/feldman_hashset_dhp.h>
5 #include "unit/print_feldman_hashset_stat.h"
9 typedef cds::gc::DHP gc_type;
12 void FeldmanHashSetHdrTest::dhp_nohash()
14 typedef size_t key_type;
16 struct traits : public cc::feldman_hashset::traits
18 typedef get_key<key_type> hash_accessor;
20 typedef cc::FeldmanHashSet< gc_type, Item<key_type>, traits > set_type;
21 static_assert(std::is_same< typename set_type::hash_type, size_t>::value, "set::hash_type != size_t!!!");
22 test_hp<set_type, nohash<key_type>>(4, 2);
24 typedef cc::FeldmanHashSet<
27 typename cc::feldman_hashset::make_traits<
28 cc::feldman_hashset::hash_accessor< get_key<key_type>>
31 test_hp<set_type2, nohash<key_type>>(4, 2);
34 void FeldmanHashSetHdrTest::dhp_stdhash()
36 typedef size_t hash_type;
38 struct traits: public cc::feldman_hashset::traits
40 typedef get_hash<hash_type> hash_accessor;
42 typedef cc::FeldmanHashSet< gc_type, Item<hash_type>, traits > set_type;
43 static_assert(std::is_same< typename set_type::hash_type, size_t>::value, "set::hash_type != size_t!!!" );
44 test_hp<set_type, std::hash<hash_type>>(4, 2);
46 typedef cc::FeldmanHashSet<
49 typename cc::feldman_hashset::make_traits<
50 cc::feldman_hashset::hash_accessor< get_hash<hash_type>>
53 test_hp<set_type2, std::hash<hash_type>>(4, 2);
56 void FeldmanHashSetHdrTest::dhp_hash128()
58 typedef hash128 hash_type;
60 struct traits: public cc::feldman_hashset::traits
62 typedef get_hash<hash_type> hash_accessor;
63 typedef hash128::less less;
65 typedef cc::FeldmanHashSet< gc_type, Item<hash_type>, traits > set_type;
66 static_assert(std::is_same< typename set_type::hash_type, hash_type>::value, "set::hash_type != hash128!!!" );
67 test_hp<set_type, hash128::make>(4, 2);
69 typedef cc::FeldmanHashSet<
72 typename cc::feldman_hashset::make_traits<
73 cc::feldman_hashset::hash_accessor< get_hash<hash_type>>
74 , co::less< hash_type::less >
77 test_hp<set_type2, hash128::make>(4, 2);
80 void FeldmanHashSetHdrTest::dhp_nohash_stat()
82 typedef size_t key_type;
84 struct traits : public cc::feldman_hashset::traits
86 typedef get_key<key_type> hash_accessor;
87 typedef cc::feldman_hashset::stat<> stat;
89 typedef cc::FeldmanHashSet< gc_type, Item<key_type>, traits > set_type;
90 static_assert(std::is_same< typename set_type::hash_type, size_t>::value, "set::hash_type != size_t!!!");
91 test_hp<set_type, nohash<key_type>>(4, 2);
93 typedef cc::FeldmanHashSet<
96 typename cc::feldman_hashset::make_traits<
97 cc::feldman_hashset::hash_accessor< get_key<key_type>>
98 , co::stat< cc::feldman_hashset::stat<>>
101 test_hp<set_type2, nohash<key_type>>(4, 2);
104 void FeldmanHashSetHdrTest::dhp_stdhash_stat()
106 typedef size_t hash_type;
108 struct traits: public cc::feldman_hashset::traits
110 typedef get_hash<hash_type> hash_accessor;
111 typedef cc::feldman_hashset::stat<> stat;
113 typedef cc::FeldmanHashSet< gc_type, Item<hash_type>, traits > set_type;
114 static_assert(std::is_same< typename set_type::hash_type, size_t>::value, "set::hash_type != size_t!!!" );
115 test_hp<set_type, std::hash<hash_type>>(4, 2);
117 typedef cc::FeldmanHashSet<
120 typename cc::feldman_hashset::make_traits<
121 cc::feldman_hashset::hash_accessor< get_hash<hash_type>>
122 ,co::stat< cc::feldman_hashset::stat<>>
125 test_hp<set_type2, std::hash<hash_type>>(4, 2);
128 void FeldmanHashSetHdrTest::dhp_hash128_stat()
130 typedef hash128 hash_type;
132 struct traits: public cc::feldman_hashset::traits
134 typedef get_hash<hash_type> hash_accessor;
135 typedef hash128::cmp compare;
136 typedef cc::feldman_hashset::stat<> stat;
138 typedef cc::FeldmanHashSet< gc_type, Item<hash_type>, traits > set_type;
139 static_assert(std::is_same< typename set_type::hash_type, hash_type>::value, "set::hash_type != hash_type!!!" );
140 test_hp<set_type, hash_type::make>(4, 2);
142 typedef cc::FeldmanHashSet<
145 typename cc::feldman_hashset::make_traits<
146 cc::feldman_hashset::hash_accessor< get_hash<hash_type>>
147 ,co::stat< cc::feldman_hashset::stat<>>
148 ,co::compare< hash128::cmp >
151 test_hp<set_type2, hash_type::make>(4, 2);
154 void FeldmanHashSetHdrTest::dhp_nohash_5_3()
156 typedef size_t key_type;
158 struct traits: public cc::feldman_hashset::traits
160 typedef get_key<key_type> hash_accessor;
162 typedef cc::FeldmanHashSet< gc_type, Item<key_type>, traits > set_type;
163 static_assert(std::is_same< typename set_type::hash_type, size_t>::value, "set::hash_type != size_t!!!" );
164 test_hp<set_type, nohash<key_type>>(5, 3);
166 typedef cc::FeldmanHashSet<
169 typename cc::feldman_hashset::make_traits<
170 cc::feldman_hashset::hash_accessor< get_key<key_type>>
173 test_hp<set_type2, nohash<key_type>>(5, 3);
176 void FeldmanHashSetHdrTest::dhp_stdhash_5_3()
178 typedef size_t hash_type;
180 struct traits: public cc::feldman_hashset::traits
182 typedef get_hash<hash_type> hash_accessor;
184 typedef cc::FeldmanHashSet< gc_type, Item<hash_type>, traits > set_type;
185 static_assert(std::is_same< typename set_type::hash_type, size_t>::value, "set::hash_type != size_t!!!" );
186 test_hp<set_type, std::hash<hash_type>>(5, 3);
188 typedef cc::FeldmanHashSet<
191 typename cc::feldman_hashset::make_traits<
192 cc::feldman_hashset::hash_accessor< get_hash<hash_type>>
195 test_hp<set_type2, std::hash<hash_type>>(5, 3);
198 void FeldmanHashSetHdrTest::dhp_hash128_4_3()
200 typedef hash128 hash_type;
202 struct traits: public cc::feldman_hashset::traits
204 typedef get_hash<hash_type> hash_accessor;
205 typedef co::v::sequential_consistent memory_model;
207 typedef cc::FeldmanHashSet< gc_type, Item<hash_type>, traits > set_type;
208 static_assert(std::is_same< typename set_type::hash_type, hash_type>::value, "set::hash_type != hash_type!!!" );
209 test_hp<set_type, hash128::make >(4, 3);
211 typedef cc::FeldmanHashSet<
214 typename cc::feldman_hashset::make_traits<
215 cc::feldman_hashset::hash_accessor< get_hash<hash_type>>
216 ,co::memory_model< co::v::sequential_consistent >
219 test_hp<set_type2, hash128::make >(4, 3);
222 void FeldmanHashSetHdrTest::dhp_nohash_5_3_stat()
224 typedef size_t key_type;
226 struct traits: public cc::feldman_hashset::traits
228 typedef get_key<key_type> hash_accessor;
229 typedef cc::feldman_hashset::stat<> stat;
231 typedef cc::FeldmanHashSet< gc_type, Item<key_type>, traits > set_type;
232 static_assert(std::is_same< typename set_type::hash_type, size_t>::value, "set::hash_type != size_t!!!" );
233 test_hp<set_type, nohash<key_type>>(5, 3);
235 typedef cc::FeldmanHashSet<
238 typename cc::feldman_hashset::make_traits<
239 cc::feldman_hashset::hash_accessor< get_key<key_type>>
240 ,co::stat< cc::feldman_hashset::stat<>>
243 test_hp<set_type2, nohash<key_type>>(5, 3);
246 void FeldmanHashSetHdrTest::dhp_stdhash_5_3_stat()
248 typedef size_t hash_type;
250 struct traits: public cc::feldman_hashset::traits
252 typedef get_hash<hash_type> hash_accessor;
253 typedef cc::feldman_hashset::stat<> stat;
255 typedef cc::FeldmanHashSet< gc_type, Item<hash_type>, traits > set_type;
256 static_assert(std::is_same< typename set_type::hash_type, size_t>::value, "set::hash_type != size_t!!!" );
257 test_hp<set_type, std::hash<hash_type>>(5, 3);
259 typedef cc::FeldmanHashSet<
262 typename cc::feldman_hashset::make_traits<
263 cc::feldman_hashset::hash_accessor< get_hash<hash_type>>
264 ,co::stat< cc::feldman_hashset::stat<>>
267 test_hp<set_type2, std::hash<hash_type>>(5, 3);
270 void FeldmanHashSetHdrTest::dhp_hash128_4_3_stat()
272 typedef hash128 hash_type;
274 struct traits: public cc::feldman_hashset::traits
276 typedef get_hash<hash_type> hash_accessor;
277 typedef cc::feldman_hashset::stat<> stat;
278 typedef hash128::less less;
279 typedef hash128::cmp compare;
281 typedef cc::FeldmanHashSet< gc_type, Item<hash_type>, traits > set_type;
282 static_assert(std::is_same< typename set_type::hash_type, hash_type>::value, "set::hash_type != hash_type!!!" );
283 test_hp<set_type, hash_type::make>(4, 3);
285 typedef cc::FeldmanHashSet<
288 typename cc::feldman_hashset::make_traits<
289 cc::feldman_hashset::hash_accessor< get_hash<hash_type>>
290 , co::stat< cc::feldman_hashset::stat<>>
291 , co::less< hash_type::less >
292 , co::compare< hash128::cmp >
295 test_hp<set_type2, hash_type::make>(4, 3);