intrusive::SkipListSet refactoring
[libcds.git] / tests / test-hdr / set / hdr_intrusive_skiplist_hp.cpp
1 //$$CDS-header$$
2
3 #include "set/hdr_intrusive_skiplist_set.h"
4
5 #include <cds/intrusive/skip_list_hp.h>
6 #include "map/print_skiplist_stat.h"
7
8 namespace set {
9
10     void IntrusiveSkipListSet::skiplist_hp_base_cmp()
11     {
12         typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
13         struct set_traits : public ci::skip_list::traits
14         {
15             typedef ci::skip_list::base_hook< co::gc<cds::gc::HP> > hook;
16             typedef cmp<item> compare;
17             typedef faked_disposer disposer;
18             typedef cds::atomicity::item_counter item_counter;
19         };
20         typedef ci::SkipListSet< cds::gc::HP, item, set_traits > set_type;
21
22         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
23     }
24
25     void IntrusiveSkipListSet::skiplist_hp_base_less()
26     {
27         typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
28
29         typedef ci::SkipListSet< cds::gc::HP, item,
30             ci::skip_list::make_traits<
31                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
32                 ,co::less< less<item> >
33                 ,ci::opt::disposer< faked_disposer >
34                 ,co::item_counter< cds::atomicity::item_counter >
35             >::type
36         >   set_type;
37
38         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
39     }
40
41     void IntrusiveSkipListSet::skiplist_hp_base_cmpmix()
42     {
43         typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
44
45         typedef ci::SkipListSet< cds::gc::HP, item,
46             ci::skip_list::make_traits<
47                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
48                 ,co::less< less<item> >
49                 ,ci::opt::disposer< faked_disposer >
50                 ,co::compare< cmp<item> >
51                 ,co::item_counter< cds::atomicity::item_counter >
52             >::type
53         >   set_type;
54
55         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
56     }
57
58     void IntrusiveSkipListSet::skiplist_hp_base_cmp_stat()
59     {
60         typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
61
62         typedef ci::SkipListSet< cds::gc::HP, item,
63             ci::skip_list::make_traits<
64                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
65                 ,co::compare< cmp<item> >
66                 ,ci::opt::disposer< faked_disposer >
67                 ,co::stat< ci::skip_list::stat<> >
68                 ,co::item_counter< cds::atomicity::item_counter >
69             >::type
70         >   set_type;
71
72         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
73     }
74
75     void IntrusiveSkipListSet::skiplist_hp_base_less_stat()
76     {
77         typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
78
79         typedef ci::SkipListSet< cds::gc::HP, item,
80             ci::skip_list::make_traits<
81                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
82                 ,co::less< less<item> >
83                 ,ci::opt::disposer< faked_disposer >
84                 ,co::stat< ci::skip_list::stat<> >
85                 ,co::item_counter< cds::atomicity::item_counter >
86             >::type
87         >   set_type;
88
89         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
90     }
91
92     void IntrusiveSkipListSet::skiplist_hp_base_cmpmix_stat()
93     {
94         typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
95
96         typedef ci::SkipListSet< cds::gc::HP, item,
97             ci::skip_list::make_traits<
98                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
99                 ,co::less< less<item> >
100                 ,ci::opt::disposer< faked_disposer >
101                 ,co::compare< cmp<item> >
102                 ,co::stat< ci::skip_list::stat<> >
103                 ,co::item_counter< cds::atomicity::item_counter >
104             >::type
105         >   set_type;
106
107         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
108     }
109
110     void IntrusiveSkipListSet::skiplist_hp_base_cmp_xorshift()
111     {
112         typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
113
114         typedef ci::SkipListSet< cds::gc::HP, item,
115             ci::skip_list::make_traits<
116                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
117                 ,co::compare< cmp<item> >
118                 ,ci::opt::disposer< faked_disposer >
119                 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
120                 ,co::item_counter< cds::atomicity::item_counter >
121             >::type
122         >   set_type;
123
124         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
125     }
126
127     void IntrusiveSkipListSet::skiplist_hp_base_less_xorshift()
128     {
129         typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
130
131         typedef ci::SkipListSet< cds::gc::HP, item,
132             ci::skip_list::make_traits<
133                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
134                 ,co::less< less<item> >
135                 ,ci::opt::disposer< faked_disposer >
136                 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
137                 ,co::item_counter< cds::atomicity::item_counter >
138             >::type
139         >   set_type;
140
141         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
142     }
143
144     void IntrusiveSkipListSet::skiplist_hp_base_cmpmix_xorshift()
145     {
146         typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
147
148         typedef ci::SkipListSet< cds::gc::HP, item,
149             ci::skip_list::make_traits<
150                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
151                 ,co::less< less<item> >
152                 ,ci::opt::disposer< faked_disposer >
153                 ,co::compare< cmp<item> >
154                 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
155                 ,co::item_counter< cds::atomicity::item_counter >
156             >::type
157         >   set_type;
158
159         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
160     }
161
162         void IntrusiveSkipListSet::skiplist_hp_base_cmp_xorshift_stat()
163     {
164         typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
165
166         typedef ci::SkipListSet< cds::gc::HP, item,
167             ci::skip_list::make_traits<
168                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
169                 ,co::compare< cmp<item> >
170                 ,ci::opt::disposer< faked_disposer >
171                 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
172                 ,co::stat< ci::skip_list::stat<> >
173                 ,co::item_counter< cds::atomicity::item_counter >
174             >::type
175         >   set_type;
176
177         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
178     }
179
180     void IntrusiveSkipListSet::skiplist_hp_base_less_xorshift_stat()
181     {
182         typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
183
184         typedef ci::SkipListSet< cds::gc::HP, item,
185             ci::skip_list::make_traits<
186                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
187                 ,co::less< less<item> >
188                 ,ci::opt::disposer< faked_disposer >
189                 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
190                 ,co::stat< ci::skip_list::stat<> >
191                 ,co::item_counter< cds::atomicity::item_counter >
192             >::type
193         >   set_type;
194
195         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
196     }
197
198     void IntrusiveSkipListSet::skiplist_hp_base_cmpmix_xorshift_stat()
199     {
200         typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
201
202         typedef ci::SkipListSet< cds::gc::HP, item,
203             ci::skip_list::make_traits<
204                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
205                 ,co::less< less<item> >
206                 ,ci::opt::disposer< faked_disposer >
207                 ,co::compare< cmp<item> >
208                 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
209                 ,co::stat< ci::skip_list::stat<> >
210                 ,co::item_counter< cds::atomicity::item_counter >
211             >::type
212         >   set_type;
213
214         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
215     }
216
217
218     //*********
219     void IntrusiveSkipListSet::skiplist_hp_base_cmp_pascal()
220     {
221         typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
222
223         typedef ci::SkipListSet< cds::gc::HP, item,
224             ci::skip_list::make_traits<
225                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
226                 ,co::compare< cmp<item> >
227                 ,ci::opt::disposer< faked_disposer >
228                 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
229                 ,co::item_counter< cds::atomicity::item_counter >
230             >::type
231         >   set_type;
232
233         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
234     }
235
236     void IntrusiveSkipListSet::skiplist_hp_base_less_pascal()
237     {
238         typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
239
240         typedef ci::SkipListSet< cds::gc::HP, item,
241             ci::skip_list::make_traits<
242                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
243                 ,co::less< less<item> >
244                 ,ci::opt::disposer< faked_disposer >
245                 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
246                 ,co::item_counter< cds::atomicity::item_counter >
247             >::type
248         >   set_type;
249
250         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
251     }
252
253     void IntrusiveSkipListSet::skiplist_hp_base_cmpmix_pascal()
254     {
255         typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
256
257         typedef ci::SkipListSet< cds::gc::HP, item,
258             ci::skip_list::make_traits<
259                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
260                 ,co::less< less<item> >
261                 ,ci::opt::disposer< faked_disposer >
262                 ,co::compare< cmp<item> >
263                 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
264                 ,co::item_counter< cds::atomicity::item_counter >
265             >::type
266         >   set_type;
267
268         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
269     }
270
271         void IntrusiveSkipListSet::skiplist_hp_base_cmp_pascal_stat()
272     {
273         typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
274
275         typedef ci::SkipListSet< cds::gc::HP, item,
276             ci::skip_list::make_traits<
277                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
278                 ,co::compare< cmp<item> >
279                 ,ci::opt::disposer< faked_disposer >
280                 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
281                 ,co::stat< ci::skip_list::stat<> >
282                 ,co::item_counter< cds::atomicity::item_counter >
283             >::type
284         >   set_type;
285
286         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
287     }
288
289     void IntrusiveSkipListSet::skiplist_hp_base_less_pascal_stat()
290     {
291         typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
292
293         typedef ci::SkipListSet< cds::gc::HP, item,
294             ci::skip_list::make_traits<
295                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
296                 ,co::less< less<item> >
297                 ,ci::opt::disposer< faked_disposer >
298                 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
299                 ,co::stat< ci::skip_list::stat<> >
300                 ,co::item_counter< cds::atomicity::item_counter >
301             >::type
302         >   set_type;
303
304         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
305     }
306
307     void IntrusiveSkipListSet::skiplist_hp_base_cmpmix_pascal_stat()
308     {
309         typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
310
311         typedef ci::SkipListSet< cds::gc::HP, item,
312             ci::skip_list::make_traits<
313                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
314                 ,co::less< less<item> >
315                 ,ci::opt::disposer< faked_disposer >
316                 ,co::compare< cmp<item> >
317                 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
318                 ,co::stat< ci::skip_list::stat<> >
319                 ,co::item_counter< cds::atomicity::item_counter >
320             >::type
321         >   set_type;
322
323         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
324     }
325
326 }   // namespace set
327
328 CPPUNIT_TEST_SUITE_REGISTRATION(set::IntrusiveSkipListSet);