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 #ifndef CDSTEST_HDR_SKIPLIST_MAP_RCU_H
32 #define CDSTEST_HDR_SKIPLIST_MAP_RCU_H
34 #include "map/hdr_map.h"
38 class SkipListMapRCUHdrTest: public HashMapHdrTest
40 typedef HashMapHdrTest base_class;
41 typedef base_class::other_item wrapped_item;
42 typedef base_class::other_less wrapped_less;
44 template <class Map, typename PrintStat >
50 static int const nLimit = 10000;
51 typedef typename Map::iterator set_iterator;
52 typedef typename Map::const_iterator const_set_iterator;
53 typedef typename Map::gc::scoped_lock rcu_lock;
58 // Test iterator - ascending order
60 CPPUNIT_ASSERT( m.empty() );
62 for ( int i = 0; i < nLimit; ++i ) {
63 CPPUNIT_ASSERT( m.insert(i, i) );
65 CPPUNIT_MSG( PrintStat()(m, "Iterator test, ascending insert order") );
71 for ( set_iterator it = m.begin(), itEnd = m.end(); it != itEnd; ++it ) {
72 CPPUNIT_ASSERT( (*it).first == it->second.m_val );
73 CPPUNIT_ASSERT( m.contains( it->first ));
74 it->second.m_val = (*it).first * 2;
76 if ( it != m.begin() ) {
77 CPPUNIT_ASSERT( nPrevKey + 1 == it->first );
82 CPPUNIT_ASSERT( nCount == nLimit );
87 for ( const_set_iterator it = m.cbegin(), itEnd = m.cend(); it != itEnd; ++it ) {
88 CPPUNIT_ASSERT( (*it).first * 2 == it->second.m_val );
90 if ( it != m.cbegin() ) {
91 CPPUNIT_ASSERT( nPrevKey + 1 == it->first );
96 CPPUNIT_ASSERT( nCount == nLimit );
98 // Test iterator - descending order
100 CPPUNIT_ASSERT( m.empty() );
102 for ( int i = nLimit; i > 0; --i ) {
103 CPPUNIT_ASSERT( m.insert( i - 1, (i-1) * 2) );
105 CPPUNIT_MSG( PrintStat()(m, "Iterator test, descending insert order") );
111 for ( set_iterator it = m.begin(), itEnd = m.end(); it != itEnd; ++it ) {
112 CPPUNIT_ASSERT( (*it).first * 2 == it->second.m_val );
113 CPPUNIT_ASSERT( m.contains( it->first ));
114 it->second.m_val = (*it).first;
116 if ( it != m.begin() ) {
117 CPPUNIT_ASSERT( nPrevKey + 1 == it->first );
119 nPrevKey = it->first;
122 CPPUNIT_ASSERT( nCount == nLimit );
127 for ( const_set_iterator it = m.cbegin(), itEnd = m.cend(); it != itEnd; ++it ) {
128 CPPUNIT_ASSERT( (*it).first == it->second.m_val );
130 if ( it != m.cbegin() ) {
131 CPPUNIT_ASSERT( nPrevKey + 1 == it->first );
133 nPrevKey = it->first;
136 CPPUNIT_ASSERT( nCount == nLimit );
138 // Test iterator - random order
140 CPPUNIT_ASSERT( m.empty() );
143 for ( int i = 0; i < nLimit; ++i ) {
146 shuffle( nRand, nRand + nLimit );
148 for ( int i = 0; i < nLimit; ++i ) {
149 CPPUNIT_ASSERT( m.insert(i, i) );
151 CPPUNIT_MSG( PrintStat()(m, "Iterator test, random insert order") );
158 for ( set_iterator it = m.begin(), itEnd = m.end(); it != itEnd; ++it ) {
159 CPPUNIT_ASSERT( (*it).first == it->second.m_val );
160 CPPUNIT_ASSERT( m.contains( it->first ));
161 it->second.m_val = (*it).first * 2;
163 if ( it != m.begin() ) {
164 CPPUNIT_ASSERT( nPrevKey + 1 == it->first );
166 nPrevKey = it->first;
169 CPPUNIT_ASSERT( nCount == nLimit );
174 for ( const_set_iterator it = m.cbegin(), itEnd = m.cend(); it != itEnd; ++it ) {
175 CPPUNIT_ASSERT( (*it).first * 2 == it->second.m_val );
177 if ( it != m.cbegin() ) {
178 CPPUNIT_ASSERT( nPrevKey + 1 == it->first );
180 nPrevKey = it->first;
183 CPPUNIT_ASSERT( nCount == nLimit );
187 for ( int i = 0; i < nLimit; ++i )
189 shuffle( arrItem, arrItem + nLimit );
191 typedef typename Map::value_type value_type;
192 typename Map::exempt_ptr ep;
193 typename Map::raw_ptr rp;
196 for ( int i = 0; i < nLimit; ++i ) {
197 int nKey = arrItem[i];
201 CPPUNIT_ASSERT( rp );
202 CPPUNIT_CHECK( rp->first == nKey );
203 CPPUNIT_CHECK( rp->second.m_val == nKey * 2 );
207 ep = m.extract( nKey );
208 CPPUNIT_ASSERT( ep );
209 CPPUNIT_ASSERT( !ep.empty() );
210 CPPUNIT_CHECK( ep->first == nKey );
211 CPPUNIT_CHECK( ep->second.m_val == nKey * 2 );
216 CPPUNIT_CHECK( !m.get( nKey ));
218 ep = m.extract( nKey );
219 CPPUNIT_CHECK( !ep );
221 CPPUNIT_ASSERT( m.empty() );
223 // extract_with/get_with
224 for ( int i = 0; i < nLimit; ++i )
225 CPPUNIT_ASSERT( m.insert(arrItem[i], arrItem[i]*2) );
227 for ( int i = 0; i < nLimit; ++i ) {
228 int nKey = arrItem[i];
231 rp = m.get_with( wrapped_item(nKey), wrapped_less() );
232 CPPUNIT_ASSERT( rp );
233 CPPUNIT_CHECK( rp->first == nKey );
234 CPPUNIT_CHECK( rp->second.m_val == nKey * 2 );
238 ep = m.extract_with( wrapped_item( nKey ), wrapped_less() );
239 CPPUNIT_ASSERT( ep );
240 CPPUNIT_ASSERT( !ep.empty() );
241 CPPUNIT_CHECK( ep->first == nKey );
242 CPPUNIT_CHECK( ep->second.m_val == nKey * 2 );
247 CPPUNIT_CHECK( !m.get_with( wrapped_item(nKey), wrapped_less() ));
249 ep = m.extract_with( wrapped_item( nKey ), wrapped_less() );
250 CPPUNIT_CHECK( !ep );
252 CPPUNIT_ASSERT( m.empty() );
255 for ( int i = 0; i < nLimit; ++i )
256 CPPUNIT_ASSERT( m.insert(arrItem[i], arrItem[i]*2) );
257 for ( int i = 0; i < nLimit; ++i ) {
258 ep = m.extract_min();
259 CPPUNIT_ASSERT( ep );
260 CPPUNIT_ASSERT( !ep.empty() );
261 CPPUNIT_CHECK( ep->first == i );
262 CPPUNIT_CHECK( ep->second.m_val == i * 2 );
265 CPPUNIT_ASSERT( m.empty() );
266 ep = m.extract_min();
267 CPPUNIT_CHECK( !ep );
270 for ( int i = 0; i < nLimit; ++i )
271 CPPUNIT_ASSERT( m.insert(arrItem[i], arrItem[i]*2) );
272 for ( int i = nLimit-1; i >= 0; --i ) {
273 ep = m.extract_max();
274 CPPUNIT_ASSERT( ep );
275 CPPUNIT_ASSERT( !ep.empty() );
276 CPPUNIT_CHECK( ep->first == i );
277 CPPUNIT_CHECK( ep->second.m_val == i * 2 );
280 CPPUNIT_ASSERT( m.empty() );
281 ep = m.extract_max();
282 CPPUNIT_CHECK( !ep );
285 CPPUNIT_MSG( PrintStat()(m, nullptr) );
289 void SkipList_RCU_GPI_less();
290 void SkipList_RCU_GPI_cmp();
291 void SkipList_RCU_GPI_cmpless();
292 void SkipList_RCU_GPI_less_stat();
293 void SkipList_RCU_GPI_cmp_stat();
294 void SkipList_RCU_GPI_cmpless_stat();
295 void SkipList_RCU_GPI_xorshift_less();
296 void SkipList_RCU_GPI_xorshift_cmp();
297 void SkipList_RCU_GPI_xorshift_cmpless();
298 void SkipList_RCU_GPI_xorshift_less_stat();
299 void SkipList_RCU_GPI_xorshift_cmp_stat();
300 void SkipList_RCU_GPI_xorshift_cmpless_stat();
301 void SkipList_RCU_GPI_turbopas_less();
302 void SkipList_RCU_GPI_turbopas_cmp();
303 void SkipList_RCU_GPI_turbopas_cmpless();
304 void SkipList_RCU_GPI_turbopas_less_stat();
305 void SkipList_RCU_GPI_turbopas_cmp_stat();
306 void SkipList_RCU_GPI_turbopas_cmpless_stat();
307 void SkipList_RCU_GPI_michaelalloc_less();
308 void SkipList_RCU_GPI_michaelalloc_cmp();
309 void SkipList_RCU_GPI_michaelalloc_cmpless();
310 void SkipList_RCU_GPI_michaelalloc_less_stat();
311 void SkipList_RCU_GPI_michaelalloc_cmp_stat();
312 void SkipList_RCU_GPI_michaelalloc_cmpless_stat();
314 void SkipList_RCU_GPB_less();
315 void SkipList_RCU_GPB_cmp();
316 void SkipList_RCU_GPB_cmpless();
317 void SkipList_RCU_GPB_less_stat();
318 void SkipList_RCU_GPB_cmp_stat();
319 void SkipList_RCU_GPB_cmpless_stat();
320 void SkipList_RCU_GPB_xorshift_less();
321 void SkipList_RCU_GPB_xorshift_cmp();
322 void SkipList_RCU_GPB_xorshift_cmpless();
323 void SkipList_RCU_GPB_xorshift_less_stat();
324 void SkipList_RCU_GPB_xorshift_cmp_stat();
325 void SkipList_RCU_GPB_xorshift_cmpless_stat();
326 void SkipList_RCU_GPB_turbopas_less();
327 void SkipList_RCU_GPB_turbopas_cmp();
328 void SkipList_RCU_GPB_turbopas_cmpless();
329 void SkipList_RCU_GPB_turbopas_less_stat();
330 void SkipList_RCU_GPB_turbopas_cmp_stat();
331 void SkipList_RCU_GPB_turbopas_cmpless_stat();
332 void SkipList_RCU_GPB_michaelalloc_less();
333 void SkipList_RCU_GPB_michaelalloc_cmp();
334 void SkipList_RCU_GPB_michaelalloc_cmpless();
335 void SkipList_RCU_GPB_michaelalloc_less_stat();
336 void SkipList_RCU_GPB_michaelalloc_cmp_stat();
337 void SkipList_RCU_GPB_michaelalloc_cmpless_stat();
339 void SkipList_RCU_GPT_less();
340 void SkipList_RCU_GPT_cmp();
341 void SkipList_RCU_GPT_cmpless();
342 void SkipList_RCU_GPT_less_stat();
343 void SkipList_RCU_GPT_cmp_stat();
344 void SkipList_RCU_GPT_cmpless_stat();
345 void SkipList_RCU_GPT_xorshift_less();
346 void SkipList_RCU_GPT_xorshift_cmp();
347 void SkipList_RCU_GPT_xorshift_cmpless();
348 void SkipList_RCU_GPT_xorshift_less_stat();
349 void SkipList_RCU_GPT_xorshift_cmp_stat();
350 void SkipList_RCU_GPT_xorshift_cmpless_stat();
351 void SkipList_RCU_GPT_turbopas_less();
352 void SkipList_RCU_GPT_turbopas_cmp();
353 void SkipList_RCU_GPT_turbopas_cmpless();
354 void SkipList_RCU_GPT_turbopas_less_stat();
355 void SkipList_RCU_GPT_turbopas_cmp_stat();
356 void SkipList_RCU_GPT_turbopas_cmpless_stat();
357 void SkipList_RCU_GPT_michaelalloc_less();
358 void SkipList_RCU_GPT_michaelalloc_cmp();
359 void SkipList_RCU_GPT_michaelalloc_cmpless();
360 void SkipList_RCU_GPT_michaelalloc_less_stat();
361 void SkipList_RCU_GPT_michaelalloc_cmp_stat();
362 void SkipList_RCU_GPT_michaelalloc_cmpless_stat();
364 void SkipList_RCU_SHB_less();
365 void SkipList_RCU_SHB_cmp();
366 void SkipList_RCU_SHB_cmpless();
367 void SkipList_RCU_SHB_less_stat();
368 void SkipList_RCU_SHB_cmp_stat();
369 void SkipList_RCU_SHB_cmpless_stat();
370 void SkipList_RCU_SHB_xorshift_less();
371 void SkipList_RCU_SHB_xorshift_cmp();
372 void SkipList_RCU_SHB_xorshift_cmpless();
373 void SkipList_RCU_SHB_xorshift_less_stat();
374 void SkipList_RCU_SHB_xorshift_cmp_stat();
375 void SkipList_RCU_SHB_xorshift_cmpless_stat();
376 void SkipList_RCU_SHB_turbopas_less();
377 void SkipList_RCU_SHB_turbopas_cmp();
378 void SkipList_RCU_SHB_turbopas_cmpless();
379 void SkipList_RCU_SHB_turbopas_less_stat();
380 void SkipList_RCU_SHB_turbopas_cmp_stat();
381 void SkipList_RCU_SHB_turbopas_cmpless_stat();
382 void SkipList_RCU_SHB_michaelalloc_less();
383 void SkipList_RCU_SHB_michaelalloc_cmp();
384 void SkipList_RCU_SHB_michaelalloc_cmpless();
385 void SkipList_RCU_SHB_michaelalloc_less_stat();
386 void SkipList_RCU_SHB_michaelalloc_cmp_stat();
387 void SkipList_RCU_SHB_michaelalloc_cmpless_stat();
389 void SkipList_RCU_SHT_less();
390 void SkipList_RCU_SHT_cmp();
391 void SkipList_RCU_SHT_cmpless();
392 void SkipList_RCU_SHT_less_stat();
393 void SkipList_RCU_SHT_cmp_stat();
394 void SkipList_RCU_SHT_cmpless_stat();
395 void SkipList_RCU_SHT_xorshift_less();
396 void SkipList_RCU_SHT_xorshift_cmp();
397 void SkipList_RCU_SHT_xorshift_cmpless();
398 void SkipList_RCU_SHT_xorshift_less_stat();
399 void SkipList_RCU_SHT_xorshift_cmp_stat();
400 void SkipList_RCU_SHT_xorshift_cmpless_stat();
401 void SkipList_RCU_SHT_turbopas_less();
402 void SkipList_RCU_SHT_turbopas_cmp();
403 void SkipList_RCU_SHT_turbopas_cmpless();
404 void SkipList_RCU_SHT_turbopas_less_stat();
405 void SkipList_RCU_SHT_turbopas_cmp_stat();
406 void SkipList_RCU_SHT_turbopas_cmpless_stat();
407 void SkipList_RCU_SHT_michaelalloc_less();
408 void SkipList_RCU_SHT_michaelalloc_cmp();
409 void SkipList_RCU_SHT_michaelalloc_cmpless();
410 void SkipList_RCU_SHT_michaelalloc_less_stat();
411 void SkipList_RCU_SHT_michaelalloc_cmp_stat();
412 void SkipList_RCU_SHT_michaelalloc_cmpless_stat();
414 CPPUNIT_TEST_SUITE(SkipListMapRCUHdrTest)
415 CPPUNIT_TEST(SkipList_RCU_GPI_less)
416 CPPUNIT_TEST(SkipList_RCU_GPI_cmp)
417 CPPUNIT_TEST(SkipList_RCU_GPI_cmpless)
418 CPPUNIT_TEST(SkipList_RCU_GPI_less_stat)
419 CPPUNIT_TEST(SkipList_RCU_GPI_cmp_stat)
420 CPPUNIT_TEST(SkipList_RCU_GPI_cmpless_stat)
421 CPPUNIT_TEST(SkipList_RCU_GPI_xorshift_less)
422 CPPUNIT_TEST(SkipList_RCU_GPI_xorshift_cmp)
423 CPPUNIT_TEST(SkipList_RCU_GPI_xorshift_cmpless)
424 CPPUNIT_TEST(SkipList_RCU_GPI_xorshift_less_stat)
425 CPPUNIT_TEST(SkipList_RCU_GPI_xorshift_cmp_stat)
426 CPPUNIT_TEST(SkipList_RCU_GPI_xorshift_cmpless_stat)
427 CPPUNIT_TEST(SkipList_RCU_GPI_turbopas_less)
428 CPPUNIT_TEST(SkipList_RCU_GPI_turbopas_cmp)
429 CPPUNIT_TEST(SkipList_RCU_GPI_turbopas_cmpless)
430 CPPUNIT_TEST(SkipList_RCU_GPI_turbopas_less_stat)
431 CPPUNIT_TEST(SkipList_RCU_GPI_turbopas_cmp_stat)
432 CPPUNIT_TEST(SkipList_RCU_GPI_turbopas_cmpless_stat)
433 CPPUNIT_TEST(SkipList_RCU_GPI_michaelalloc_less)
434 CPPUNIT_TEST(SkipList_RCU_GPI_michaelalloc_cmp)
435 CPPUNIT_TEST(SkipList_RCU_GPI_michaelalloc_cmpless)
436 CPPUNIT_TEST(SkipList_RCU_GPI_michaelalloc_less_stat)
437 CPPUNIT_TEST(SkipList_RCU_GPI_michaelalloc_cmp_stat)
438 CPPUNIT_TEST(SkipList_RCU_GPI_michaelalloc_cmpless_stat)
440 CPPUNIT_TEST(SkipList_RCU_GPB_less)
441 CPPUNIT_TEST(SkipList_RCU_GPB_cmp)
442 CPPUNIT_TEST(SkipList_RCU_GPB_cmpless)
443 CPPUNIT_TEST(SkipList_RCU_GPB_less_stat)
444 CPPUNIT_TEST(SkipList_RCU_GPB_cmp_stat)
445 CPPUNIT_TEST(SkipList_RCU_GPB_cmpless_stat)
446 CPPUNIT_TEST(SkipList_RCU_GPB_xorshift_less)
447 CPPUNIT_TEST(SkipList_RCU_GPB_xorshift_cmp)
448 CPPUNIT_TEST(SkipList_RCU_GPB_xorshift_cmpless)
449 CPPUNIT_TEST(SkipList_RCU_GPB_xorshift_less_stat)
450 CPPUNIT_TEST(SkipList_RCU_GPB_xorshift_cmp_stat)
451 CPPUNIT_TEST(SkipList_RCU_GPB_xorshift_cmpless_stat)
452 CPPUNIT_TEST(SkipList_RCU_GPB_turbopas_less)
453 CPPUNIT_TEST(SkipList_RCU_GPB_turbopas_cmp)
454 CPPUNIT_TEST(SkipList_RCU_GPB_turbopas_cmpless)
455 CPPUNIT_TEST(SkipList_RCU_GPB_turbopas_less_stat)
456 CPPUNIT_TEST(SkipList_RCU_GPB_turbopas_cmp_stat)
457 CPPUNIT_TEST(SkipList_RCU_GPB_turbopas_cmpless_stat)
458 CPPUNIT_TEST(SkipList_RCU_GPB_michaelalloc_less)
459 CPPUNIT_TEST(SkipList_RCU_GPB_michaelalloc_cmp)
460 CPPUNIT_TEST(SkipList_RCU_GPB_michaelalloc_cmpless)
461 CPPUNIT_TEST(SkipList_RCU_GPB_michaelalloc_less_stat)
462 CPPUNIT_TEST(SkipList_RCU_GPB_michaelalloc_cmp_stat)
463 CPPUNIT_TEST(SkipList_RCU_GPB_michaelalloc_cmpless_stat)
465 CPPUNIT_TEST(SkipList_RCU_GPT_less)
466 CPPUNIT_TEST(SkipList_RCU_GPT_cmp)
467 CPPUNIT_TEST(SkipList_RCU_GPT_cmpless)
468 CPPUNIT_TEST(SkipList_RCU_GPT_less_stat)
469 CPPUNIT_TEST(SkipList_RCU_GPT_cmp_stat)
470 CPPUNIT_TEST(SkipList_RCU_GPT_cmpless_stat)
471 CPPUNIT_TEST(SkipList_RCU_GPT_xorshift_less)
472 CPPUNIT_TEST(SkipList_RCU_GPT_xorshift_cmp)
473 CPPUNIT_TEST(SkipList_RCU_GPT_xorshift_cmpless)
474 CPPUNIT_TEST(SkipList_RCU_GPT_xorshift_less_stat)
475 CPPUNIT_TEST(SkipList_RCU_GPT_xorshift_cmp_stat)
476 CPPUNIT_TEST(SkipList_RCU_GPT_xorshift_cmpless_stat)
477 CPPUNIT_TEST(SkipList_RCU_GPT_turbopas_less)
478 CPPUNIT_TEST(SkipList_RCU_GPT_turbopas_cmp)
479 CPPUNIT_TEST(SkipList_RCU_GPT_turbopas_cmpless)
480 CPPUNIT_TEST(SkipList_RCU_GPT_turbopas_less_stat)
481 CPPUNIT_TEST(SkipList_RCU_GPT_turbopas_cmp_stat)
482 CPPUNIT_TEST(SkipList_RCU_GPT_turbopas_cmpless_stat)
483 CPPUNIT_TEST(SkipList_RCU_GPT_michaelalloc_less)
484 CPPUNIT_TEST(SkipList_RCU_GPT_michaelalloc_cmp)
485 CPPUNIT_TEST(SkipList_RCU_GPT_michaelalloc_cmpless)
486 CPPUNIT_TEST(SkipList_RCU_GPT_michaelalloc_less_stat)
487 CPPUNIT_TEST(SkipList_RCU_GPT_michaelalloc_cmp_stat)
488 CPPUNIT_TEST(SkipList_RCU_GPT_michaelalloc_cmpless_stat)
490 CPPUNIT_TEST(SkipList_RCU_SHB_less)
491 CPPUNIT_TEST(SkipList_RCU_SHB_cmp)
492 CPPUNIT_TEST(SkipList_RCU_SHB_cmpless)
493 CPPUNIT_TEST(SkipList_RCU_SHB_less_stat)
494 CPPUNIT_TEST(SkipList_RCU_SHB_cmp_stat)
495 CPPUNIT_TEST(SkipList_RCU_SHB_cmpless_stat)
496 CPPUNIT_TEST(SkipList_RCU_SHB_xorshift_less)
497 CPPUNIT_TEST(SkipList_RCU_SHB_xorshift_cmp)
498 CPPUNIT_TEST(SkipList_RCU_SHB_xorshift_cmpless)
499 CPPUNIT_TEST(SkipList_RCU_SHB_xorshift_less_stat)
500 CPPUNIT_TEST(SkipList_RCU_SHB_xorshift_cmp_stat)
501 CPPUNIT_TEST(SkipList_RCU_SHB_xorshift_cmpless_stat)
502 CPPUNIT_TEST(SkipList_RCU_SHB_turbopas_less)
503 CPPUNIT_TEST(SkipList_RCU_SHB_turbopas_cmp)
504 CPPUNIT_TEST(SkipList_RCU_SHB_turbopas_cmpless)
505 CPPUNIT_TEST(SkipList_RCU_SHB_turbopas_less_stat)
506 CPPUNIT_TEST(SkipList_RCU_SHB_turbopas_cmp_stat)
507 CPPUNIT_TEST(SkipList_RCU_SHB_turbopas_cmpless_stat)
508 CPPUNIT_TEST(SkipList_RCU_SHB_michaelalloc_less)
509 CPPUNIT_TEST(SkipList_RCU_SHB_michaelalloc_cmp)
510 CPPUNIT_TEST(SkipList_RCU_SHB_michaelalloc_cmpless)
511 CPPUNIT_TEST(SkipList_RCU_SHB_michaelalloc_less_stat)
512 CPPUNIT_TEST(SkipList_RCU_SHB_michaelalloc_cmp_stat)
513 CPPUNIT_TEST(SkipList_RCU_SHB_michaelalloc_cmpless_stat)
515 CPPUNIT_TEST(SkipList_RCU_SHT_less)
516 CPPUNIT_TEST(SkipList_RCU_SHT_cmp)
517 CPPUNIT_TEST(SkipList_RCU_SHT_cmpless)
518 CPPUNIT_TEST(SkipList_RCU_SHT_less_stat)
519 CPPUNIT_TEST(SkipList_RCU_SHT_cmp_stat)
520 CPPUNIT_TEST(SkipList_RCU_SHT_cmpless_stat)
521 CPPUNIT_TEST(SkipList_RCU_SHT_xorshift_less)
522 CPPUNIT_TEST(SkipList_RCU_SHT_xorshift_cmp)
523 CPPUNIT_TEST(SkipList_RCU_SHT_xorshift_cmpless)
524 CPPUNIT_TEST(SkipList_RCU_SHT_xorshift_less_stat)
525 CPPUNIT_TEST(SkipList_RCU_SHT_xorshift_cmp_stat)
526 CPPUNIT_TEST(SkipList_RCU_SHT_xorshift_cmpless_stat)
527 CPPUNIT_TEST(SkipList_RCU_SHT_turbopas_less)
528 CPPUNIT_TEST(SkipList_RCU_SHT_turbopas_cmp)
529 CPPUNIT_TEST(SkipList_RCU_SHT_turbopas_cmpless)
530 CPPUNIT_TEST(SkipList_RCU_SHT_turbopas_less_stat)
531 CPPUNIT_TEST(SkipList_RCU_SHT_turbopas_cmp_stat)
532 CPPUNIT_TEST(SkipList_RCU_SHT_turbopas_cmpless_stat)
533 CPPUNIT_TEST(SkipList_RCU_SHT_michaelalloc_less)
534 CPPUNIT_TEST(SkipList_RCU_SHT_michaelalloc_cmp)
535 CPPUNIT_TEST(SkipList_RCU_SHT_michaelalloc_cmpless)
536 CPPUNIT_TEST(SkipList_RCU_SHT_michaelalloc_less_stat)
537 CPPUNIT_TEST(SkipList_RCU_SHT_michaelalloc_cmp_stat)
538 CPPUNIT_TEST(SkipList_RCU_SHT_michaelalloc_cmpless_stat)
540 CPPUNIT_TEST_SUITE_END()
546 #endif // #ifndef CDSTEST_HDR_SKIPLIST_MAP_RCU_H