3 #ifndef CDSTEST_HDR_SKIPLIST_SET_RCU_H
4 #define CDSTEST_HDR_SKIPLIST_SET_RCU_H
6 #include "set/hdr_set.h"
10 class SkipListSetRCUHdrTest: public HashSetHdrTest
12 typedef HashSetHdrTest base_class;
14 typedef base_class::other_item wrapped_item;
15 typedef base_class::other_less wrapped_less;
17 template <class Set, typename PrintStat >
21 base_class::test_int_with( s );
23 static int const nLimit = 10000;
24 typedef typename Set::iterator set_iterator;
25 typedef typename Set::const_iterator const_set_iterator;
26 typedef typename Set::gc::scoped_lock rcu_lock;
31 int arrRandom[nLimit];
32 for ( int i = 0; i < nLimit; ++i )
34 shuffle( arrRandom, arrRandom + nLimit );
36 // Test iterator - ascending order
38 CPPUNIT_ASSERT( s.empty() );
40 for ( int i = 0; i < nLimit; ++i ) {
41 CPPUNIT_ASSERT( s.insert(i) );
43 CPPUNIT_MSG( PrintStat()(s, "Iterator test, ascending insert order") );
49 for ( set_iterator it = s.begin(), itEnd = s.end(); it != itEnd; ++it ) {
50 CPPUNIT_ASSERT( (*it).nKey == it->nVal );
51 CPPUNIT_ASSERT( s.contains( it->nKey ));
52 it->nVal = (*it).nKey * 2;
54 if ( it != s.begin() ) {
55 CPPUNIT_ASSERT( nPrevKey + 1 == it->nKey );
60 CPPUNIT_ASSERT( nCount == nLimit );
65 for ( const_set_iterator it = s.cbegin(), itEnd = s.cend(); it != itEnd; ++it ) {
66 CPPUNIT_ASSERT( (*it).nKey * 2 == it->nVal );
68 if ( it != s.cbegin() ) {
69 CPPUNIT_ASSERT( nPrevKey + 1 == it->nKey );
74 CPPUNIT_ASSERT( nCount == nLimit );
76 // Test iterator - descending order
78 CPPUNIT_ASSERT( s.empty() );
80 for ( int i = nLimit; i > 0; --i ) {
81 CPPUNIT_ASSERT( s.insert( std::make_pair(i - 1, (i-1) * 2) ));
83 CPPUNIT_MSG( PrintStat()(s, "Iterator test, descending insert order") );
89 for ( set_iterator it = s.begin(), itEnd = s.end(); it != itEnd; ++it ) {
90 CPPUNIT_ASSERT( (*it).nKey * 2 == it->nVal );
91 CPPUNIT_ASSERT( s.contains( it->nKey ));
92 it->nVal = (*it).nKey;
94 if ( it != s.begin() ) {
95 CPPUNIT_ASSERT( nPrevKey + 1 == it->nKey );
100 CPPUNIT_ASSERT( nCount == nLimit );
105 for ( const_set_iterator it = s.cbegin(), itEnd = s.cend(); it != itEnd; ++it ) {
106 CPPUNIT_ASSERT( (*it).nKey == it->nVal );
108 if ( it != s.cbegin() ) {
109 CPPUNIT_ASSERT( nPrevKey + 1 == it->nKey );
114 CPPUNIT_ASSERT( nCount == nLimit );
116 // Test iterator - random order
118 CPPUNIT_ASSERT( s.empty() );
120 for ( int i = 0; i < nLimit; ++i ) {
121 CPPUNIT_ASSERT( s.insert( arrRandom[i] ) );
123 CPPUNIT_MSG( PrintStat()(s, "Iterator test, random insert order") );
130 for ( set_iterator it = s.begin(), itEnd = s.end(); it != itEnd; ++it ) {
131 CPPUNIT_ASSERT( (*it).nKey == it->nVal );
132 CPPUNIT_ASSERT( s.contains( it->nKey ));
133 it->nVal = (*it).nKey * 2;
135 if ( it != s.begin() ) {
136 CPPUNIT_ASSERT( nPrevKey + 1 == it->nKey );
141 CPPUNIT_ASSERT( nCount == nLimit );
146 for ( const_set_iterator it = s.cbegin(), itEnd = s.cend(); it != itEnd; ++it ) {
147 CPPUNIT_ASSERT( (*it).nKey * 2 == it->nVal );
149 if ( it != s.cbegin() ) {
150 CPPUNIT_ASSERT( nPrevKey + 1 == it->nKey );
155 CPPUNIT_ASSERT( nCount == nLimit );
159 typedef typename base_class::less<typename Set::value_type> less_predicate;
160 typename Set::exempt_ptr ep;
161 typename Set::raw_ptr rp;
164 for ( int i = 0; i < nLimit; ++i ) {
165 int nKey = arrRandom[i];
169 CPPUNIT_ASSERT( rp );
170 CPPUNIT_CHECK( rp->nKey == nKey );
171 CPPUNIT_CHECK( rp->nVal == nKey * 2 );
175 ep = s.extract( nKey );
176 CPPUNIT_ASSERT( ep );
177 CPPUNIT_ASSERT( !ep.empty() );
178 CPPUNIT_CHECK( ep->nKey == nKey );
179 CPPUNIT_CHECK( ep->nVal == nKey * 2 );
184 CPPUNIT_CHECK( !s.get( nKey ));
186 ep = s.extract( nKey );
187 CPPUNIT_CHECK( !ep );
189 CPPUNIT_CHECK( s.empty());
191 // extract_with/get_with
192 for ( int i = 0; i < nLimit; ++i )
193 CPPUNIT_ASSERT( s.insert( arrRandom[i]) );
195 for ( int i = 0; i < nLimit; ++i ) {
196 int nKey = arrRandom[i];
199 rp = s.get_with( wrapped_item(nKey), wrapped_less() );
200 CPPUNIT_ASSERT( rp );
201 CPPUNIT_CHECK( rp->nKey == nKey );
202 CPPUNIT_CHECK( rp->nVal == nKey );
206 ep = s.extract_with( wrapped_item( nKey ), wrapped_less() );
207 CPPUNIT_ASSERT( ep );
208 CPPUNIT_ASSERT( !ep.empty() );
209 CPPUNIT_CHECK( ep->nKey == nKey );
210 CPPUNIT_CHECK( ep->nVal == nKey );
215 CPPUNIT_CHECK( !s.get_with( wrapped_item( nKey ), wrapped_less() ));
217 ep = s.extract_with( wrapped_item( nKey ), wrapped_less() );
218 CPPUNIT_CHECK( !ep );
220 CPPUNIT_CHECK( s.empty());
223 for ( int i = 0; i < nLimit; ++i )
224 CPPUNIT_ASSERT( s.insert( arrRandom[i]) );
226 for ( int i = 0; i < nLimit; ++i ) {
227 ep = s.extract_min();
228 CPPUNIT_ASSERT( ep );
229 CPPUNIT_ASSERT( !ep.empty() );
230 CPPUNIT_CHECK( ep->nKey == i );
231 CPPUNIT_CHECK( ep->nVal == i );
232 CPPUNIT_CHECK( !s.contains(i) );
235 CPPUNIT_CHECK( s.empty());
238 for ( int i = 0; i < nLimit; ++i )
239 CPPUNIT_ASSERT( s.insert( arrRandom[i]) );
241 for ( int i = nLimit-1; i >= 0; --i ) {
242 ep = s.extract_max();
243 CPPUNIT_ASSERT( ep );
244 CPPUNIT_ASSERT( !ep.empty() );
245 CPPUNIT_CHECK( ep->nKey == i );
246 CPPUNIT_CHECK( ep->nVal == i );
247 CPPUNIT_CHECK( !s.contains(i) );
250 CPPUNIT_CHECK( s.empty());
251 ep = s.extract_min();
252 CPPUNIT_CHECK( !ep );
253 CPPUNIT_CHECK( !s.extract_max() );
256 CPPUNIT_MSG( PrintStat()(s, nullptr) );
260 void SkipList_RCU_GPI_less();
261 void SkipList_RCU_GPI_cmp();
262 void SkipList_RCU_GPI_cmpless();
263 void SkipList_RCU_GPI_less_stat();
264 void SkipList_RCU_GPI_cmp_stat();
265 void SkipList_RCU_GPI_cmpless_stat();
266 void SkipList_RCU_GPI_xorshift_less();
267 void SkipList_RCU_GPI_xorshift_cmp();
268 void SkipList_RCU_GPI_xorshift_cmpless();
269 void SkipList_RCU_GPI_xorshift_less_stat();
270 void SkipList_RCU_GPI_xorshift_cmp_stat();
271 void SkipList_RCU_GPI_xorshift_cmpless_stat();
272 void SkipList_RCU_GPI_turbopas_less();
273 void SkipList_RCU_GPI_turbopas_cmp();
274 void SkipList_RCU_GPI_turbopas_cmpless();
275 void SkipList_RCU_GPI_turbopas_less_stat();
276 void SkipList_RCU_GPI_turbopas_cmp_stat();
277 void SkipList_RCU_GPI_turbopas_cmpless_stat();
278 void SkipList_RCU_GPI_michaelalloc_less();
279 void SkipList_RCU_GPI_michaelalloc_cmp();
280 void SkipList_RCU_GPI_michaelalloc_cmpless();
281 void SkipList_RCU_GPI_michaelalloc_less_stat();
282 void SkipList_RCU_GPI_michaelalloc_cmp_stat();
283 void SkipList_RCU_GPI_michaelalloc_cmpless_stat();
285 void SkipList_RCU_GPB_less();
286 void SkipList_RCU_GPB_cmp();
287 void SkipList_RCU_GPB_cmpless();
288 void SkipList_RCU_GPB_less_stat();
289 void SkipList_RCU_GPB_cmp_stat();
290 void SkipList_RCU_GPB_cmpless_stat();
291 void SkipList_RCU_GPB_xorshift_less();
292 void SkipList_RCU_GPB_xorshift_cmp();
293 void SkipList_RCU_GPB_xorshift_cmpless();
294 void SkipList_RCU_GPB_xorshift_less_stat();
295 void SkipList_RCU_GPB_xorshift_cmp_stat();
296 void SkipList_RCU_GPB_xorshift_cmpless_stat();
297 void SkipList_RCU_GPB_turbopas_less();
298 void SkipList_RCU_GPB_turbopas_cmp();
299 void SkipList_RCU_GPB_turbopas_cmpless();
300 void SkipList_RCU_GPB_turbopas_less_stat();
301 void SkipList_RCU_GPB_turbopas_cmp_stat();
302 void SkipList_RCU_GPB_turbopas_cmpless_stat();
303 void SkipList_RCU_GPB_michaelalloc_less();
304 void SkipList_RCU_GPB_michaelalloc_cmp();
305 void SkipList_RCU_GPB_michaelalloc_cmpless();
306 void SkipList_RCU_GPB_michaelalloc_less_stat();
307 void SkipList_RCU_GPB_michaelalloc_cmp_stat();
308 void SkipList_RCU_GPB_michaelalloc_cmpless_stat();
310 void SkipList_RCU_GPT_less();
311 void SkipList_RCU_GPT_cmp();
312 void SkipList_RCU_GPT_cmpless();
313 void SkipList_RCU_GPT_less_stat();
314 void SkipList_RCU_GPT_cmp_stat();
315 void SkipList_RCU_GPT_cmpless_stat();
316 void SkipList_RCU_GPT_xorshift_less();
317 void SkipList_RCU_GPT_xorshift_cmp();
318 void SkipList_RCU_GPT_xorshift_cmpless();
319 void SkipList_RCU_GPT_xorshift_less_stat();
320 void SkipList_RCU_GPT_xorshift_cmp_stat();
321 void SkipList_RCU_GPT_xorshift_cmpless_stat();
322 void SkipList_RCU_GPT_turbopas_less();
323 void SkipList_RCU_GPT_turbopas_cmp();
324 void SkipList_RCU_GPT_turbopas_cmpless();
325 void SkipList_RCU_GPT_turbopas_less_stat();
326 void SkipList_RCU_GPT_turbopas_cmp_stat();
327 void SkipList_RCU_GPT_turbopas_cmpless_stat();
328 void SkipList_RCU_GPT_michaelalloc_less();
329 void SkipList_RCU_GPT_michaelalloc_cmp();
330 void SkipList_RCU_GPT_michaelalloc_cmpless();
331 void SkipList_RCU_GPT_michaelalloc_less_stat();
332 void SkipList_RCU_GPT_michaelalloc_cmp_stat();
333 void SkipList_RCU_GPT_michaelalloc_cmpless_stat();
335 void SkipList_RCU_SHB_less();
336 void SkipList_RCU_SHB_cmp();
337 void SkipList_RCU_SHB_cmpless();
338 void SkipList_RCU_SHB_less_stat();
339 void SkipList_RCU_SHB_cmp_stat();
340 void SkipList_RCU_SHB_cmpless_stat();
341 void SkipList_RCU_SHB_xorshift_less();
342 void SkipList_RCU_SHB_xorshift_cmp();
343 void SkipList_RCU_SHB_xorshift_cmpless();
344 void SkipList_RCU_SHB_xorshift_less_stat();
345 void SkipList_RCU_SHB_xorshift_cmp_stat();
346 void SkipList_RCU_SHB_xorshift_cmpless_stat();
347 void SkipList_RCU_SHB_turbopas_less();
348 void SkipList_RCU_SHB_turbopas_cmp();
349 void SkipList_RCU_SHB_turbopas_cmpless();
350 void SkipList_RCU_SHB_turbopas_less_stat();
351 void SkipList_RCU_SHB_turbopas_cmp_stat();
352 void SkipList_RCU_SHB_turbopas_cmpless_stat();
353 void SkipList_RCU_SHB_michaelalloc_less();
354 void SkipList_RCU_SHB_michaelalloc_cmp();
355 void SkipList_RCU_SHB_michaelalloc_cmpless();
356 void SkipList_RCU_SHB_michaelalloc_less_stat();
357 void SkipList_RCU_SHB_michaelalloc_cmp_stat();
358 void SkipList_RCU_SHB_michaelalloc_cmpless_stat();
360 void SkipList_RCU_SHT_less();
361 void SkipList_RCU_SHT_cmp();
362 void SkipList_RCU_SHT_cmpless();
363 void SkipList_RCU_SHT_less_stat();
364 void SkipList_RCU_SHT_cmp_stat();
365 void SkipList_RCU_SHT_cmpless_stat();
366 void SkipList_RCU_SHT_xorshift_less();
367 void SkipList_RCU_SHT_xorshift_cmp();
368 void SkipList_RCU_SHT_xorshift_cmpless();
369 void SkipList_RCU_SHT_xorshift_less_stat();
370 void SkipList_RCU_SHT_xorshift_cmp_stat();
371 void SkipList_RCU_SHT_xorshift_cmpless_stat();
372 void SkipList_RCU_SHT_turbopas_less();
373 void SkipList_RCU_SHT_turbopas_cmp();
374 void SkipList_RCU_SHT_turbopas_cmpless();
375 void SkipList_RCU_SHT_turbopas_less_stat();
376 void SkipList_RCU_SHT_turbopas_cmp_stat();
377 void SkipList_RCU_SHT_turbopas_cmpless_stat();
378 void SkipList_RCU_SHT_michaelalloc_less();
379 void SkipList_RCU_SHT_michaelalloc_cmp();
380 void SkipList_RCU_SHT_michaelalloc_cmpless();
381 void SkipList_RCU_SHT_michaelalloc_less_stat();
382 void SkipList_RCU_SHT_michaelalloc_cmp_stat();
383 void SkipList_RCU_SHT_michaelalloc_cmpless_stat();
385 CPPUNIT_TEST_SUITE(SkipListSetRCUHdrTest)
386 CPPUNIT_TEST(SkipList_RCU_GPI_less)
387 CPPUNIT_TEST(SkipList_RCU_GPI_cmp)
388 CPPUNIT_TEST(SkipList_RCU_GPI_cmpless)
389 CPPUNIT_TEST(SkipList_RCU_GPI_less_stat)
390 CPPUNIT_TEST(SkipList_RCU_GPI_cmp_stat)
391 CPPUNIT_TEST(SkipList_RCU_GPI_cmpless_stat)
392 CPPUNIT_TEST(SkipList_RCU_GPI_xorshift_less)
393 CPPUNIT_TEST(SkipList_RCU_GPI_xorshift_cmp)
394 CPPUNIT_TEST(SkipList_RCU_GPI_xorshift_cmpless)
395 CPPUNIT_TEST(SkipList_RCU_GPI_xorshift_less_stat)
396 CPPUNIT_TEST(SkipList_RCU_GPI_xorshift_cmp_stat)
397 CPPUNIT_TEST(SkipList_RCU_GPI_xorshift_cmpless_stat)
398 CPPUNIT_TEST(SkipList_RCU_GPI_turbopas_less)
399 CPPUNIT_TEST(SkipList_RCU_GPI_turbopas_cmp)
400 CPPUNIT_TEST(SkipList_RCU_GPI_turbopas_cmpless)
401 CPPUNIT_TEST(SkipList_RCU_GPI_turbopas_less_stat)
402 CPPUNIT_TEST(SkipList_RCU_GPI_turbopas_cmp_stat)
403 CPPUNIT_TEST(SkipList_RCU_GPI_turbopas_cmpless_stat)
404 CPPUNIT_TEST(SkipList_RCU_GPI_michaelalloc_less)
405 CPPUNIT_TEST(SkipList_RCU_GPI_michaelalloc_cmp)
406 CPPUNIT_TEST(SkipList_RCU_GPI_michaelalloc_cmpless)
407 CPPUNIT_TEST(SkipList_RCU_GPI_michaelalloc_less_stat)
408 CPPUNIT_TEST(SkipList_RCU_GPI_michaelalloc_cmp_stat)
409 CPPUNIT_TEST(SkipList_RCU_GPI_michaelalloc_cmpless_stat)
411 CPPUNIT_TEST(SkipList_RCU_GPB_less)
412 CPPUNIT_TEST(SkipList_RCU_GPB_cmp)
413 CPPUNIT_TEST(SkipList_RCU_GPB_cmpless)
414 CPPUNIT_TEST(SkipList_RCU_GPB_less_stat)
415 CPPUNIT_TEST(SkipList_RCU_GPB_cmp_stat)
416 CPPUNIT_TEST(SkipList_RCU_GPB_cmpless_stat)
417 CPPUNIT_TEST(SkipList_RCU_GPB_xorshift_less)
418 CPPUNIT_TEST(SkipList_RCU_GPB_xorshift_cmp)
419 CPPUNIT_TEST(SkipList_RCU_GPB_xorshift_cmpless)
420 CPPUNIT_TEST(SkipList_RCU_GPB_xorshift_less_stat)
421 CPPUNIT_TEST(SkipList_RCU_GPB_xorshift_cmp_stat)
422 CPPUNIT_TEST(SkipList_RCU_GPB_xorshift_cmpless_stat)
423 CPPUNIT_TEST(SkipList_RCU_GPB_turbopas_less)
424 CPPUNIT_TEST(SkipList_RCU_GPB_turbopas_cmp)
425 CPPUNIT_TEST(SkipList_RCU_GPB_turbopas_cmpless)
426 CPPUNIT_TEST(SkipList_RCU_GPB_turbopas_less_stat)
427 CPPUNIT_TEST(SkipList_RCU_GPB_turbopas_cmp_stat)
428 CPPUNIT_TEST(SkipList_RCU_GPB_turbopas_cmpless_stat)
429 CPPUNIT_TEST(SkipList_RCU_GPB_michaelalloc_less)
430 CPPUNIT_TEST(SkipList_RCU_GPB_michaelalloc_cmp)
431 CPPUNIT_TEST(SkipList_RCU_GPB_michaelalloc_cmpless)
432 CPPUNIT_TEST(SkipList_RCU_GPB_michaelalloc_less_stat)
433 CPPUNIT_TEST(SkipList_RCU_GPB_michaelalloc_cmp_stat)
434 CPPUNIT_TEST(SkipList_RCU_GPB_michaelalloc_cmpless_stat)
436 CPPUNIT_TEST(SkipList_RCU_GPT_less)
437 CPPUNIT_TEST(SkipList_RCU_GPT_cmp)
438 CPPUNIT_TEST(SkipList_RCU_GPT_cmpless)
439 CPPUNIT_TEST(SkipList_RCU_GPT_less_stat)
440 CPPUNIT_TEST(SkipList_RCU_GPT_cmp_stat)
441 CPPUNIT_TEST(SkipList_RCU_GPT_cmpless_stat)
442 CPPUNIT_TEST(SkipList_RCU_GPT_xorshift_less)
443 CPPUNIT_TEST(SkipList_RCU_GPT_xorshift_cmp)
444 CPPUNIT_TEST(SkipList_RCU_GPT_xorshift_cmpless)
445 CPPUNIT_TEST(SkipList_RCU_GPT_xorshift_less_stat)
446 CPPUNIT_TEST(SkipList_RCU_GPT_xorshift_cmp_stat)
447 CPPUNIT_TEST(SkipList_RCU_GPT_xorshift_cmpless_stat)
448 CPPUNIT_TEST(SkipList_RCU_GPT_turbopas_less)
449 CPPUNIT_TEST(SkipList_RCU_GPT_turbopas_cmp)
450 CPPUNIT_TEST(SkipList_RCU_GPT_turbopas_cmpless)
451 CPPUNIT_TEST(SkipList_RCU_GPT_turbopas_less_stat)
452 CPPUNIT_TEST(SkipList_RCU_GPT_turbopas_cmp_stat)
453 CPPUNIT_TEST(SkipList_RCU_GPT_turbopas_cmpless_stat)
454 CPPUNIT_TEST(SkipList_RCU_GPT_michaelalloc_less)
455 CPPUNIT_TEST(SkipList_RCU_GPT_michaelalloc_cmp)
456 CPPUNIT_TEST(SkipList_RCU_GPT_michaelalloc_cmpless)
457 CPPUNIT_TEST(SkipList_RCU_GPT_michaelalloc_less_stat)
458 CPPUNIT_TEST(SkipList_RCU_GPT_michaelalloc_cmp_stat)
459 CPPUNIT_TEST(SkipList_RCU_GPT_michaelalloc_cmpless_stat)
461 CPPUNIT_TEST(SkipList_RCU_SHB_less)
462 CPPUNIT_TEST(SkipList_RCU_SHB_cmp)
463 CPPUNIT_TEST(SkipList_RCU_SHB_cmpless)
464 CPPUNIT_TEST(SkipList_RCU_SHB_less_stat)
465 CPPUNIT_TEST(SkipList_RCU_SHB_cmp_stat)
466 CPPUNIT_TEST(SkipList_RCU_SHB_cmpless_stat)
467 CPPUNIT_TEST(SkipList_RCU_SHB_xorshift_less)
468 CPPUNIT_TEST(SkipList_RCU_SHB_xorshift_cmp)
469 CPPUNIT_TEST(SkipList_RCU_SHB_xorshift_cmpless)
470 CPPUNIT_TEST(SkipList_RCU_SHB_xorshift_less_stat)
471 CPPUNIT_TEST(SkipList_RCU_SHB_xorshift_cmp_stat)
472 CPPUNIT_TEST(SkipList_RCU_SHB_xorshift_cmpless_stat)
473 CPPUNIT_TEST(SkipList_RCU_SHB_turbopas_less)
474 CPPUNIT_TEST(SkipList_RCU_SHB_turbopas_cmp)
475 CPPUNIT_TEST(SkipList_RCU_SHB_turbopas_cmpless)
476 CPPUNIT_TEST(SkipList_RCU_SHB_turbopas_less_stat)
477 CPPUNIT_TEST(SkipList_RCU_SHB_turbopas_cmp_stat)
478 CPPUNIT_TEST(SkipList_RCU_SHB_turbopas_cmpless_stat)
479 CPPUNIT_TEST(SkipList_RCU_SHB_michaelalloc_less)
480 CPPUNIT_TEST(SkipList_RCU_SHB_michaelalloc_cmp)
481 CPPUNIT_TEST(SkipList_RCU_SHB_michaelalloc_cmpless)
482 CPPUNIT_TEST(SkipList_RCU_SHB_michaelalloc_less_stat)
483 CPPUNIT_TEST(SkipList_RCU_SHB_michaelalloc_cmp_stat)
484 CPPUNIT_TEST(SkipList_RCU_SHB_michaelalloc_cmpless_stat)
486 CPPUNIT_TEST(SkipList_RCU_SHT_less)
487 CPPUNIT_TEST(SkipList_RCU_SHT_cmp)
488 CPPUNIT_TEST(SkipList_RCU_SHT_cmpless)
489 CPPUNIT_TEST(SkipList_RCU_SHT_less_stat)
490 CPPUNIT_TEST(SkipList_RCU_SHT_cmp_stat)
491 CPPUNIT_TEST(SkipList_RCU_SHT_cmpless_stat)
492 CPPUNIT_TEST(SkipList_RCU_SHT_xorshift_less)
493 CPPUNIT_TEST(SkipList_RCU_SHT_xorshift_cmp)
494 CPPUNIT_TEST(SkipList_RCU_SHT_xorshift_cmpless)
495 CPPUNIT_TEST(SkipList_RCU_SHT_xorshift_less_stat)
496 CPPUNIT_TEST(SkipList_RCU_SHT_xorshift_cmp_stat)
497 CPPUNIT_TEST(SkipList_RCU_SHT_xorshift_cmpless_stat)
498 CPPUNIT_TEST(SkipList_RCU_SHT_turbopas_less)
499 CPPUNIT_TEST(SkipList_RCU_SHT_turbopas_cmp)
500 CPPUNIT_TEST(SkipList_RCU_SHT_turbopas_cmpless)
501 CPPUNIT_TEST(SkipList_RCU_SHT_turbopas_less_stat)
502 CPPUNIT_TEST(SkipList_RCU_SHT_turbopas_cmp_stat)
503 CPPUNIT_TEST(SkipList_RCU_SHT_turbopas_cmpless_stat)
504 CPPUNIT_TEST(SkipList_RCU_SHT_michaelalloc_less)
505 CPPUNIT_TEST(SkipList_RCU_SHT_michaelalloc_cmp)
506 CPPUNIT_TEST(SkipList_RCU_SHT_michaelalloc_cmpless)
507 CPPUNIT_TEST(SkipList_RCU_SHT_michaelalloc_less_stat)
508 CPPUNIT_TEST(SkipList_RCU_SHT_michaelalloc_cmp_stat)
509 CPPUNIT_TEST(SkipList_RCU_SHT_michaelalloc_cmpless_stat)
511 CPPUNIT_TEST_SUITE_END()
516 #endif // #ifndef CDSTEST_HDR_SKIPLIST_SET_RCU_H