CuckooSet/Map refactoring
[libcds.git] / tests / test-hdr / set / hdr_intrusive_cuckoo_set.cpp
1 //$$CDS-header$$
2
3 #include "set/hdr_intrusive_cuckoo_set.h"
4 #include <cds/intrusive/cuckoo_set.h>
5
6 #include "set/intrusive_cuckoo_set_common.h"
7 #include "../unit/print_cuckoo_stat.h"
8
9 namespace set {
10
11     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_list_basehook_equal()
12     {
13         typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::list, 0 > >  item_type;
14         struct set_traits : public ci::cuckoo::traits {
15             typedef co::hash_tuple< hash1, hash2 > hash;
16             typedef set::equal_to<item_type> equal_to;
17         };
18         typedef ci::CuckooSet< item_type, set_traits > set_type;
19
20         test_cuckoo<set_type>();
21     }
22
23     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_vector_basehook_equal()
24     {
25         typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::vector<4>, 0 > >  item_type;
26
27         struct set_traits : public ci::cuckoo::traits {
28             typedef ci::cuckoo::base_hook< ci::cuckoo::probeset_type< item_type::probeset_type >> hook;
29             typedef co::hash_tuple< hash1, hash2 > hash;
30             typedef set::equal_to<item_type> equal_to;
31         };
32         typedef ci::CuckooSet< item_type, set_traits > set_type;
33
34         test_cuckoo<set_type>();
35     }
36
37     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_list_basehook_sort_cmp()
38     {
39         typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::list, 0 > >  item_type;
40
41         typedef ci::CuckooSet< item_type
42             ,ci::cuckoo::make_traits<
43                 ci::opt::hook< ci::cuckoo::base_hook<
44                     ci::cuckoo::probeset_type< item_type::probeset_type >
45                 > >
46                 ,co::hash< std::tuple< hash1, hash2 > >
47                 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
48             >::type
49         > set_type;
50
51         test_cuckoo<set_type>();
52     }
53
54     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_vector_basehook_sort_cmp()
55     {
56         typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::vector<4>, 0 > >  item_type;
57
58         typedef ci::CuckooSet< item_type
59             ,ci::cuckoo::make_traits<
60                 ci::opt::hook< ci::cuckoo::base_hook<
61                     ci::cuckoo::probeset_type< item_type::probeset_type >
62                 > >
63                 ,co::hash< std::tuple< hash1, hash2 > >
64                 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
65             >::type
66         > set_type;
67
68         test_cuckoo<set_type>();
69     }
70
71     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_list_basehook_sort_less()
72     {
73         typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::list, 0 > >  item_type;
74
75         typedef ci::CuckooSet< item_type
76             ,ci::cuckoo::make_traits<
77                 ci::opt::hook< ci::cuckoo::base_hook<
78                     ci::cuckoo::probeset_type< item_type::probeset_type >
79                 > >
80                 ,co::hash< std::tuple< hash1, hash2 > >
81                 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
82             >::type
83         > set_type;
84
85         test_cuckoo<set_type>();
86     }
87
88     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_vector_basehook_sort_less()
89     {
90         typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::vector<4>, 0 > >  item_type;
91
92         typedef ci::CuckooSet< item_type
93             ,ci::cuckoo::make_traits<
94                 ci::opt::hook< ci::cuckoo::base_hook<
95                     ci::cuckoo::probeset_type< item_type::probeset_type >
96                 > >
97                 ,co::hash< std::tuple< hash1, hash2 > >
98                 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
99             >::type
100         > set_type;
101
102         test_cuckoo<set_type>();
103     }
104
105     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_list_basehook_sort_cmpmix()
106     {
107         typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::list, 0 > >  item_type;
108
109         typedef ci::CuckooSet< item_type
110             ,ci::cuckoo::make_traits<
111                 ci::opt::hook< ci::cuckoo::base_hook<
112                     ci::cuckoo::probeset_type< item_type::probeset_type >
113                 > >
114                 ,co::hash< std::tuple< hash1, hash2 > >
115                 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
116                 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
117             >::type
118         > set_type;
119
120         test_cuckoo<set_type>();
121     }
122
123     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_vector_basehook_sort_cmpmix()
124     {
125         typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::vector<8>, 0 > >  item_type;
126
127         typedef ci::CuckooSet< item_type
128             ,ci::cuckoo::make_traits<
129                 ci::opt::hook< ci::cuckoo::base_hook<
130                     ci::cuckoo::probeset_type< item_type::probeset_type >
131                 > >
132                 ,co::hash< std::tuple< hash1, hash2 > >
133                 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
134                 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
135             >::type
136         > set_type;
137
138         test_cuckoo<set_type>();
139     }
140
141     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_vector_basehook_sort_cmpmix_stat()
142     {
143         typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::vector<8>, 0 > >  item_type;
144
145         typedef ci::CuckooSet< item_type
146             ,ci::cuckoo::make_traits<
147                 ci::opt::hook< ci::cuckoo::base_hook<
148                     ci::cuckoo::probeset_type< item_type::probeset_type >
149                 > >
150                 ,co::hash< std::tuple< hash1, hash2 > >
151                 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
152                 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
153                 ,co::stat< ci::cuckoo::stat >
154             >::type
155         > set_type;
156
157         unsigned int nProbesetSize = set_type::node_type::probeset_size ? set_type::node_type::probeset_size : 4;
158         set_type s( 256, nProbesetSize, nProbesetSize / 2 );
159         test_with( s );
160         CPPUNIT_MSG( s.statistics() << s.mutex_policy_statistics() );
161     }
162
163
164     // base hook, store hash
165     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_list_basehook_equal_storehash()
166     {
167         typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::list, 2 > >  item_type;
168         typedef ci::CuckooSet< item_type
169             ,ci::cuckoo::make_traits<
170                 ci::opt::hook< ci::cuckoo::base_hook<
171                     ci::cuckoo::probeset_type< item_type::probeset_type >
172                     ,ci::cuckoo::store_hash< item_type::hash_array_size >
173                 > >
174                 ,co::hash< std::tuple< hash1, hash2 > >
175                 ,co::equal_to< equal_to<item_type> >
176             >::type
177         > set_type;
178
179         test_cuckoo<set_type>();
180     }
181
182     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_vector_basehook_equal_storehash()
183     {
184         typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::vector<4>, 2 > >  item_type;
185
186         typedef ci::CuckooSet< item_type
187             ,ci::cuckoo::make_traits<
188                 ci::opt::hook< ci::cuckoo::base_hook<
189                     ci::cuckoo::probeset_type< item_type::probeset_type >
190                     ,ci::cuckoo::store_hash< item_type::hash_array_size >
191                 > >
192                 ,co::hash< std::tuple< hash1, hash2 > >
193                 ,co::equal_to< equal_to<item_type> >
194             >::type
195         > set_type;
196
197         test_cuckoo<set_type>();
198     }
199
200     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_list_basehook_sort_cmp_storehash()
201     {
202         typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::list, 2 > >  item_type;
203
204         typedef ci::CuckooSet< item_type
205             ,ci::cuckoo::make_traits<
206                 ci::opt::hook< ci::cuckoo::base_hook<
207                     ci::cuckoo::probeset_type< item_type::probeset_type >
208                     ,ci::cuckoo::store_hash< item_type::hash_array_size >
209                 > >
210                 ,co::hash< std::tuple< hash1, hash2 > >
211                 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
212             >::type
213         > set_type;
214
215         test_cuckoo<set_type>();
216     }
217
218     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_vector_basehook_sort_cmp_storehash()
219     {
220         typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::vector<4>, 2 > >  item_type;
221
222         typedef ci::CuckooSet< item_type
223             ,ci::cuckoo::make_traits<
224                 ci::opt::hook< ci::cuckoo::base_hook<
225                     ci::cuckoo::probeset_type< item_type::probeset_type >
226                     ,ci::cuckoo::store_hash< item_type::hash_array_size >
227                 > >
228                 ,co::hash< std::tuple< hash1, hash2 > >
229                 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
230             >::type
231         > set_type;
232
233         test_cuckoo<set_type>();
234     }
235
236     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_list_basehook_sort_less_storehash()
237     {
238         typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::list, 2 > >  item_type;
239
240         typedef ci::CuckooSet< item_type
241             ,ci::cuckoo::make_traits<
242                 ci::opt::hook< ci::cuckoo::base_hook<
243                     ci::cuckoo::probeset_type< item_type::probeset_type >
244                     ,ci::cuckoo::store_hash< item_type::hash_array_size >
245                 > >
246                 ,co::hash< std::tuple< hash1, hash2 > >
247                 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
248             >::type
249         > set_type;
250
251         test_cuckoo<set_type>();
252     }
253
254     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_vector_basehook_sort_less_storehash()
255     {
256         typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::vector<4>, 2 > >  item_type;
257
258         typedef ci::CuckooSet< item_type
259             ,ci::cuckoo::make_traits<
260                 ci::opt::hook< ci::cuckoo::base_hook<
261                     ci::cuckoo::probeset_type< item_type::probeset_type >
262                     ,ci::cuckoo::store_hash< item_type::hash_array_size >
263                 > >
264                 ,co::hash< std::tuple< hash1, hash2 > >
265                 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
266             >::type
267         > set_type;
268
269         test_cuckoo<set_type>();
270     }
271
272     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_list_basehook_sort_cmpmix_storehash()
273     {
274         typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::list, 2 > >  item_type;
275
276         typedef ci::CuckooSet< item_type
277             ,ci::cuckoo::make_traits<
278                 ci::opt::hook< ci::cuckoo::base_hook<
279                     ci::cuckoo::probeset_type< item_type::probeset_type >
280                     ,ci::cuckoo::store_hash< item_type::hash_array_size >
281                 > >
282                 ,co::hash< std::tuple< hash1, hash2 > >
283                 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
284                 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
285             >::type
286         > set_type;
287
288         test_cuckoo<set_type>();
289     }
290
291     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_vector_basehook_sort_cmpmix_storehash()
292     {
293         typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::vector<8>, 2 > >  item_type;
294
295         typedef ci::CuckooSet< item_type
296             ,ci::cuckoo::make_traits<
297                 ci::opt::hook< ci::cuckoo::base_hook<
298                     ci::cuckoo::probeset_type< item_type::probeset_type >
299                     ,ci::cuckoo::store_hash< item_type::hash_array_size >
300                 > >
301                 ,co::hash< std::tuple< hash1, hash2 > >
302                 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
303                 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
304             >::type
305         > set_type;
306
307         test_cuckoo<set_type>();
308     }
309
310
311     // Member hook
312     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_list_memberhook_equal()
313     {
314         typedef IntrusiveCuckooSetHdrTest::member_item< ci::cuckoo::node< ci::cuckoo::list, 0 > >  item_type;
315         typedef ci::CuckooSet< item_type
316             ,ci::cuckoo::make_traits<
317                 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember)> >
318                 ,co::hash< std::tuple< hash1, hash2 > >
319                 ,co::equal_to< equal_to<item_type> >
320             >::type
321         > set_type;
322
323         test_cuckoo<set_type>();
324     }
325
326     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_vector_memberhook_equal()
327     {
328         typedef ci::cuckoo::node< ci::cuckoo::vector<4>, 0 > node_type;
329         typedef IntrusiveCuckooSetHdrTest::member_item< node_type >  item_type;
330
331         typedef ci::CuckooSet< item_type
332             ,ci::cuckoo::make_traits<
333                 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember),
334                     ci::cuckoo::probeset_type< node_type::probeset_type >
335                 > >
336                 ,co::hash< std::tuple< hash1, hash2 > >
337                 ,co::equal_to< equal_to<item_type> >
338             >::type
339         > set_type;
340
341         test_cuckoo<set_type>();
342     }
343
344     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_list_memberhook_sort_cmp()
345     {
346         typedef ci::cuckoo::node< ci::cuckoo::list, 0 > node_type;
347         typedef IntrusiveCuckooSetHdrTest::member_item< node_type >  item_type;
348
349         typedef ci::CuckooSet< item_type
350             ,ci::cuckoo::make_traits<
351                 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember),
352                     ci::cuckoo::probeset_type< node_type::probeset_type >
353                 > >
354                 ,co::hash< std::tuple< hash1, hash2 > >
355                 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
356             >::type
357         > set_type;
358
359         test_cuckoo<set_type>();
360     }
361
362     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_vector_memberhook_sort_cmp()
363     {
364         typedef ci::cuckoo::node< ci::cuckoo::vector<4>, 0 > node_type;
365         typedef IntrusiveCuckooSetHdrTest::member_item< node_type >  item_type;
366
367         typedef ci::CuckooSet< item_type
368             ,ci::cuckoo::make_traits<
369                 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember),
370                     ci::cuckoo::probeset_type< node_type::probeset_type >
371                 > >
372                 ,co::hash< std::tuple< hash1, hash2 > >
373                 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
374             >::type
375         > set_type;
376
377         test_cuckoo<set_type>();
378     }
379
380     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_list_memberhook_sort_less()
381     {
382         typedef ci::cuckoo::node< ci::cuckoo::list, 0 > node_type;
383         typedef IntrusiveCuckooSetHdrTest::member_item< node_type >  item_type;
384
385         typedef ci::CuckooSet< item_type
386             ,ci::cuckoo::make_traits<
387                 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember),
388                     ci::cuckoo::probeset_type< node_type::probeset_type >
389                 > >
390                 ,co::hash< std::tuple< hash1, hash2 > >
391                 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
392             >::type
393         > set_type;
394
395         test_cuckoo<set_type>();
396     }
397
398     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_vector_memberhook_sort_less()
399     {
400         typedef ci::cuckoo::node< ci::cuckoo::vector<4>, 0 > node_type;
401         typedef IntrusiveCuckooSetHdrTest::member_item< node_type >  item_type;
402
403         typedef ci::CuckooSet< item_type
404             ,ci::cuckoo::make_traits<
405                 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember),
406                     ci::cuckoo::probeset_type< node_type::probeset_type >
407                 > >
408                 ,co::hash< std::tuple< hash1, hash2 > >
409                 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
410             >::type
411         > set_type;
412
413         test_cuckoo<set_type>();
414     }
415
416     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_list_memberhook_sort_cmpmix()
417     {
418         typedef ci::cuckoo::node< ci::cuckoo::list, 0 > node_type;
419         typedef IntrusiveCuckooSetHdrTest::member_item< node_type >  item_type;
420
421         typedef ci::CuckooSet< item_type
422             ,ci::cuckoo::make_traits<
423                 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember),
424                     ci::cuckoo::probeset_type< node_type::probeset_type >
425                 > >
426                 ,co::hash< std::tuple< hash1, hash2 > >
427                 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
428                 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
429             >::type
430         > set_type;
431
432         test_cuckoo<set_type>();
433     }
434
435     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_vector_memberhook_sort_cmpmix()
436     {
437         typedef ci::cuckoo::node< ci::cuckoo::vector<8>, 0 > node_type;
438         typedef IntrusiveCuckooSetHdrTest::member_item< node_type >  item_type;
439
440         typedef ci::CuckooSet< item_type
441             ,ci::cuckoo::make_traits<
442                 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember),
443                     ci::cuckoo::probeset_type< node_type::probeset_type >
444                 > >
445                 ,co::hash< std::tuple< hash1, hash2 > >
446                 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
447                 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
448             >::type
449         > set_type;
450
451         test_cuckoo<set_type>();
452     }
453
454
455     // member hook, store hash
456     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_list_memberhook_equal_storehash()
457     {
458         typedef ci::cuckoo::node< ci::cuckoo::list, 2 > node_type;
459         typedef IntrusiveCuckooSetHdrTest::member_item< node_type >  item_type;
460         typedef ci::CuckooSet< item_type
461             ,ci::cuckoo::make_traits<
462                 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember),
463                     ci::cuckoo::probeset_type< node_type::probeset_type >
464                     ,ci::cuckoo::store_hash< node_type::hash_array_size >
465                 > >
466                 ,co::hash< std::tuple< hash1, hash2 > >
467                 ,co::equal_to< equal_to<item_type> >
468             >::type
469         > set_type;
470
471         test_cuckoo<set_type>();
472     }
473
474     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_vector_memberhook_equal_storehash()
475     {
476         typedef ci::cuckoo::node< ci::cuckoo::vector<4>, 2 > node_type;
477         typedef IntrusiveCuckooSetHdrTest::member_item< node_type >  item_type;
478
479         typedef ci::CuckooSet< item_type
480             ,ci::cuckoo::make_traits<
481                 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember),
482                     ci::cuckoo::probeset_type< node_type::probeset_type >
483                     ,ci::cuckoo::store_hash< node_type::hash_array_size >
484                 > >
485                 ,co::hash< std::tuple< hash1, hash2 > >
486                 ,co::equal_to< equal_to<item_type> >
487             >::type
488         > set_type;
489
490         test_cuckoo<set_type>();
491     }
492
493     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_list_memberhook_sort_cmp_storehash()
494     {
495         typedef ci::cuckoo::node< ci::cuckoo::list, 2 > node_type;
496         typedef IntrusiveCuckooSetHdrTest::member_item< node_type >  item_type;
497
498         typedef ci::CuckooSet< item_type
499             ,ci::cuckoo::make_traits<
500                 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember),
501                     ci::cuckoo::probeset_type< node_type::probeset_type >
502                     ,ci::cuckoo::store_hash< node_type::hash_array_size >
503                 > >
504                 ,co::hash< std::tuple< hash1, hash2 > >
505                 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
506             >::type
507         > set_type;
508
509         test_cuckoo<set_type>();
510     }
511
512     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_vector_memberhook_sort_cmp_storehash()
513     {
514         typedef ci::cuckoo::node< ci::cuckoo::vector<4>, 2 > node_type;
515         typedef IntrusiveCuckooSetHdrTest::member_item< node_type >  item_type;
516
517         typedef ci::CuckooSet< item_type
518             ,ci::cuckoo::make_traits<
519                 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember),
520                     ci::cuckoo::probeset_type< node_type::probeset_type >
521                     ,ci::cuckoo::store_hash< node_type::hash_array_size >
522                 > >
523                 ,co::hash< std::tuple< hash1, hash2 > >
524                 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
525             >::type
526         > set_type;
527
528         test_cuckoo<set_type>();
529     }
530
531     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_list_memberhook_sort_less_storehash()
532     {
533         typedef ci::cuckoo::node< ci::cuckoo::list, 2 > node_type;
534         typedef IntrusiveCuckooSetHdrTest::member_item< node_type >  item_type;
535
536         typedef ci::CuckooSet< item_type
537             ,ci::cuckoo::make_traits<
538                 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember),
539                     ci::cuckoo::probeset_type< node_type::probeset_type >
540                     ,ci::cuckoo::store_hash< node_type::hash_array_size >
541                 > >
542                 ,co::hash< std::tuple< hash1, hash2 > >
543                 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
544             >::type
545         > set_type;
546
547         test_cuckoo<set_type>();
548     }
549
550     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_vector_memberhook_sort_less_storehash()
551     {
552         typedef ci::cuckoo::node< ci::cuckoo::vector<4>, 2 > node_type;
553         typedef IntrusiveCuckooSetHdrTest::member_item< node_type >  item_type;
554
555         typedef ci::CuckooSet< item_type
556             ,ci::cuckoo::make_traits<
557                 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember),
558                     ci::cuckoo::probeset_type< node_type::probeset_type >
559                     ,ci::cuckoo::store_hash< node_type::hash_array_size >
560                 > >
561                 ,co::hash< std::tuple< hash1, hash2 > >
562                 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
563             >::type
564         > set_type;
565
566         test_cuckoo<set_type>();
567     }
568
569     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_list_memberhook_sort_cmpmix_storehash()
570     {
571         typedef ci::cuckoo::node< ci::cuckoo::list, 2 > node_type;
572         typedef IntrusiveCuckooSetHdrTest::member_item< node_type >  item_type;
573
574         typedef ci::CuckooSet< item_type
575             ,ci::cuckoo::make_traits<
576                 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember),
577                     ci::cuckoo::probeset_type< node_type::probeset_type >
578                     ,ci::cuckoo::store_hash< node_type::hash_array_size >
579                 > >
580                 ,co::hash< std::tuple< hash1, hash2 > >
581                 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
582                 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
583             >::type
584         > set_type;
585
586         test_cuckoo<set_type>();
587     }
588
589     void IntrusiveCuckooSetHdrTest::Cuckoo_striped_vector_memberhook_sort_cmpmix_storehash()
590     {
591         typedef ci::cuckoo::node< ci::cuckoo::vector<8>, 2 > node_type;
592         typedef IntrusiveCuckooSetHdrTest::member_item< node_type >  item_type;
593
594         typedef ci::CuckooSet< item_type
595             ,ci::cuckoo::make_traits<
596                 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember),
597                     ci::cuckoo::probeset_type< node_type::probeset_type >
598                     ,ci::cuckoo::store_hash< node_type::hash_array_size >
599                 > >
600                 ,co::hash< std::tuple< hash1, hash2 > >
601                 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
602                 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
603             >::type
604         > set_type;
605
606         test_cuckoo<set_type>();
607     }
608
609 }   // namespace set
610
611 CPPUNIT_TEST_SUITE_REGISTRATION(set::IntrusiveCuckooSetHdrTest);