2 This file is a part of libcds - Concurrent Data Structures library
4 (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
6 Source code repo: http://github.com/khizmax/libcds/
7 Download: http://sourceforge.net/projects/libcds/files/
9 Redistribution and use in source and binary forms, with or without
10 modification, are permitted provided that the following conditions are met:
12 * Redistributions of source code must retain the above copyright notice, this
13 list of conditions and the following disclaimer.
15 * Redistributions in binary form must reproduce the above copyright notice,
16 this list of conditions and the following disclaimer in the documentation
17 and/or other materials provided with the distribution.
19 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
23 FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 #include "set/hdr_skiplist_set.h"
32 #include <cds/container/skip_list_set_hp.h>
33 #include "unit/michael_alloc.h"
34 #include "map/print_skiplist_stat.h"
38 void SkipListSetHdrTest::SkipList_HP_less()
40 struct set_traits : public cc::skip_list::traits
42 typedef SkipListSetHdrTest::less<item > less;
43 typedef simple_item_counter item_counter;
45 typedef cc::SkipListSet< cds::gc::HP, item, set_traits > set;
46 test< set, misc::print_skiplist_stat<set::stat> >();
49 void SkipListSetHdrTest::SkipList_HP_cmp()
51 typedef cc::SkipListSet< cds::gc::HP, item,
52 cc::skip_list::make_traits<
53 co::compare< cmp<item > >
54 ,co::item_counter< simple_item_counter >
57 test< set, misc::print_skiplist_stat<set::stat> >();
60 void SkipListSetHdrTest::SkipList_HP_cmpless()
62 typedef cc::SkipListSet< cds::gc::HP, item,
63 cc::skip_list::make_traits<
64 co::less< less<item > >
65 ,co::compare< cmp<item > >
66 ,co::item_counter< simple_item_counter >
69 test< set, misc::print_skiplist_stat<set::stat> >();
72 void SkipListSetHdrTest::SkipList_HP_less_stat()
74 typedef cc::SkipListSet< cds::gc::HP, item,
75 cc::skip_list::make_traits<
76 co::less< less<item > >
77 ,co::item_counter< simple_item_counter >
78 ,co::stat< cc::skip_list::stat<> >
81 test< set, misc::print_skiplist_stat<set::stat> >();
84 void SkipListSetHdrTest::SkipList_HP_cmp_stat()
86 typedef cc::SkipListSet< cds::gc::HP, item,
87 cc::skip_list::make_traits<
88 co::compare< cmp<item > >
89 ,co::item_counter< simple_item_counter >
90 ,co::stat< cc::skip_list::stat<> >
93 test< set, misc::print_skiplist_stat<set::stat> >();
96 void SkipListSetHdrTest::SkipList_HP_cmpless_stat()
98 typedef cc::SkipListSet< cds::gc::HP, item,
99 cc::skip_list::make_traits<
100 co::less< less<item > >
101 ,co::compare< cmp<item > >
102 ,co::item_counter< simple_item_counter >
103 ,co::stat< cc::skip_list::stat<> >
106 test< set, misc::print_skiplist_stat<set::stat> >();
109 void SkipListSetHdrTest::SkipList_HP_xorshift_less()
111 typedef cc::SkipListSet< cds::gc::HP, item,
112 cc::skip_list::make_traits<
113 co::less< less<item > >
114 ,co::item_counter< simple_item_counter >
115 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
118 test< set, misc::print_skiplist_stat<set::stat> >();
121 void SkipListSetHdrTest::SkipList_HP_xorshift_cmp()
123 typedef cc::SkipListSet< cds::gc::HP, item,
124 cc::skip_list::make_traits<
125 co::compare< cmp<item > >
126 ,co::item_counter< simple_item_counter >
127 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
130 test< set, misc::print_skiplist_stat<set::stat> >();
133 void SkipListSetHdrTest::SkipList_HP_xorshift_cmpless()
135 typedef cc::SkipListSet< cds::gc::HP, item,
136 cc::skip_list::make_traits<
137 co::less< less<item > >
138 ,co::compare< cmp<item > >
139 ,co::item_counter< simple_item_counter >
140 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
143 test< set, misc::print_skiplist_stat<set::stat> >();
146 void SkipListSetHdrTest::SkipList_HP_xorshift_less_stat()
148 typedef cc::SkipListSet< cds::gc::HP, item,
149 cc::skip_list::make_traits<
150 co::less< less<item > >
151 ,co::item_counter< simple_item_counter >
152 ,co::stat< cc::skip_list::stat<> >
153 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
156 test< set, misc::print_skiplist_stat<set::stat> >();
159 void SkipListSetHdrTest::SkipList_HP_xorshift_cmp_stat()
161 typedef cc::SkipListSet< cds::gc::HP, item,
162 cc::skip_list::make_traits<
163 co::compare< cmp<item > >
164 ,co::item_counter< simple_item_counter >
165 ,co::stat< cc::skip_list::stat<> >
166 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
169 test< set, misc::print_skiplist_stat<set::stat> >();
172 void SkipListSetHdrTest::SkipList_HP_xorshift_cmpless_stat()
174 typedef cc::SkipListSet< cds::gc::HP, item,
175 cc::skip_list::make_traits<
176 co::less< less<item > >
177 ,co::compare< cmp<item > >
178 ,co::item_counter< simple_item_counter >
179 ,co::stat< cc::skip_list::stat<> >
180 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
183 test< set, misc::print_skiplist_stat<set::stat> >();
186 void SkipListSetHdrTest::SkipList_HP_turbopas_less()
188 typedef cc::SkipListSet< cds::gc::HP, item,
189 cc::skip_list::make_traits<
190 co::less< less<item > >
191 ,co::item_counter< simple_item_counter >
192 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
195 test< set, misc::print_skiplist_stat<set::stat> >();
198 void SkipListSetHdrTest::SkipList_HP_turbopas_cmp()
200 typedef cc::SkipListSet< cds::gc::HP, item,
201 cc::skip_list::make_traits<
202 co::compare< cmp<item > >
203 ,co::item_counter< simple_item_counter >
204 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
207 test< set, misc::print_skiplist_stat<set::stat> >();
210 void SkipListSetHdrTest::SkipList_HP_turbopas_cmpless()
212 typedef cc::SkipListSet< cds::gc::HP, item,
213 cc::skip_list::make_traits<
214 co::less< less<item > >
215 ,co::compare< cmp<item > >
216 ,co::item_counter< simple_item_counter >
217 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
220 test< set, misc::print_skiplist_stat<set::stat> >();
223 void SkipListSetHdrTest::SkipList_HP_turbopas_less_stat()
225 typedef cc::SkipListSet< cds::gc::HP, item,
226 cc::skip_list::make_traits<
227 co::less< less<item > >
228 ,co::item_counter< simple_item_counter >
229 ,co::stat< cc::skip_list::stat<> >
230 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
233 test< set, misc::print_skiplist_stat<set::stat> >();
236 void SkipListSetHdrTest::SkipList_HP_turbopas_cmp_stat()
238 typedef cc::SkipListSet< cds::gc::HP, item,
239 cc::skip_list::make_traits<
240 co::compare< cmp<item > >
241 ,co::item_counter< simple_item_counter >
242 ,co::stat< cc::skip_list::stat<> >
243 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
246 test< set, misc::print_skiplist_stat<set::stat> >();
249 void SkipListSetHdrTest::SkipList_HP_turbopas_cmpless_stat()
251 typedef cc::SkipListSet< cds::gc::HP, item,
252 cc::skip_list::make_traits<
253 co::less< less<item > >
254 ,co::compare< cmp<item > >
255 ,co::item_counter< simple_item_counter >
256 ,co::stat< cc::skip_list::stat<> >
257 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
260 test< set, misc::print_skiplist_stat<set::stat> >();
263 void SkipListSetHdrTest::SkipList_HP_michaelalloc_less()
265 typedef cc::SkipListSet< cds::gc::HP, item,
266 cc::skip_list::make_traits<
267 co::less< less<item > >
268 ,co::item_counter< simple_item_counter >
269 ,co::allocator< memory::MichaelAllocator<int> >
272 test< set, misc::print_skiplist_stat<set::stat> >();
275 void SkipListSetHdrTest::SkipList_HP_michaelalloc_cmp()
277 typedef cc::SkipListSet< cds::gc::HP, item,
278 cc::skip_list::make_traits<
279 co::compare< cmp<item > >
280 ,co::item_counter< simple_item_counter >
281 ,co::allocator< memory::MichaelAllocator<int> >
284 test< set, misc::print_skiplist_stat<set::stat> >();
287 void SkipListSetHdrTest::SkipList_HP_michaelalloc_cmpless()
289 typedef cc::SkipListSet< cds::gc::HP, item,
290 cc::skip_list::make_traits<
291 co::less< less<item > >
292 ,co::compare< cmp<item > >
293 ,co::item_counter< simple_item_counter >
294 ,co::allocator< memory::MichaelAllocator<int> >
297 test< set, misc::print_skiplist_stat<set::stat> >();
300 void SkipListSetHdrTest::SkipList_HP_michaelalloc_less_stat()
302 typedef cc::SkipListSet< cds::gc::HP, item,
303 cc::skip_list::make_traits<
304 co::less< less<item > >
305 ,co::item_counter< simple_item_counter >
306 ,co::stat< cc::skip_list::stat<> >
307 ,co::allocator< memory::MichaelAllocator<int> >
310 test< set, misc::print_skiplist_stat<set::stat> >();
313 void SkipListSetHdrTest::SkipList_HP_michaelalloc_cmp_stat()
315 typedef cc::SkipListSet< cds::gc::HP, item,
316 cc::skip_list::make_traits<
317 co::compare< cmp<item > >
318 ,co::item_counter< simple_item_counter >
319 ,co::stat< cc::skip_list::stat<> >
320 ,co::allocator< memory::MichaelAllocator<int> >
323 test< set, misc::print_skiplist_stat<set::stat> >();
326 void SkipListSetHdrTest::SkipList_HP_michaelalloc_cmpless_stat()
328 typedef cc::SkipListSet< cds::gc::HP, item,
329 cc::skip_list::make_traits<
330 co::less< less<item > >
331 ,co::compare< cmp<item > >
332 ,co::item_counter< simple_item_counter >
333 ,co::stat< cc::skip_list::stat<> >
334 ,co::allocator< memory::MichaelAllocator<int> >
337 test< set, misc::print_skiplist_stat<set::stat> >();
341 CPPUNIT_TEST_SUITE_REGISTRATION(set::SkipListSetHdrTest);