3 #ifndef __CDSTEST_HDR_SKIPLIST_MAP_RCU_H
4 #define __CDSTEST_HDR_SKIPLIST_MAP_RCU_H
6 #include "map/hdr_map.h"
10 class SkipListMapRCUHdrTest: public HashMapHdrTest
12 typedef HashMapHdrTest base_class;
13 typedef base_class::other_item wrapped_item;
14 typedef base_class::other_less wrapped_less;
16 template <class Map, typename PrintStat >
22 static int const nLimit = 10000;
23 typedef typename Map::iterator set_iterator;
24 typedef typename Map::const_iterator const_set_iterator;
25 typedef typename Map::gc::scoped_lock rcu_lock;
30 // Test iterator - ascending order
32 CPPUNIT_ASSERT( m.empty() );
34 for ( int i = 0; i < nLimit; ++i ) {
35 CPPUNIT_ASSERT( m.insert(i, i) );
37 CPPUNIT_MSG( PrintStat()(m, "Iterator test, ascending insert order") );
43 for ( set_iterator it = m.begin(), itEnd = m.end(); it != itEnd; ++it ) {
44 CPPUNIT_ASSERT( (*it).first == it->second.m_val );
45 CPPUNIT_ASSERT( m.find( it->first ));
46 it->second.m_val = (*it).first * 2;
48 if ( it != m.begin() ) {
49 CPPUNIT_ASSERT( nPrevKey + 1 == it->first );
54 CPPUNIT_ASSERT( nCount == nLimit );
59 for ( const_set_iterator it = m.cbegin(), itEnd = m.cend(); it != itEnd; ++it ) {
60 CPPUNIT_ASSERT( (*it).first * 2 == it->second.m_val );
62 if ( it != m.cbegin() ) {
63 CPPUNIT_ASSERT( nPrevKey + 1 == it->first );
68 CPPUNIT_ASSERT( nCount == nLimit );
70 // Test iterator - descending order
72 CPPUNIT_ASSERT( m.empty() );
74 for ( int i = nLimit; i > 0; --i ) {
75 CPPUNIT_ASSERT( m.insert( i - 1, (i-1) * 2) );
77 CPPUNIT_MSG( PrintStat()(m, "Iterator test, descending insert order") );
83 for ( set_iterator it = m.begin(), itEnd = m.end(); it != itEnd; ++it ) {
84 CPPUNIT_ASSERT( (*it).first * 2 == it->second.m_val );
85 CPPUNIT_ASSERT( m.find( it->first ));
86 it->second.m_val = (*it).first;
88 if ( it != m.begin() ) {
89 CPPUNIT_ASSERT( nPrevKey + 1 == it->first );
94 CPPUNIT_ASSERT( nCount == nLimit );
99 for ( const_set_iterator it = m.cbegin(), itEnd = m.cend(); it != itEnd; ++it ) {
100 CPPUNIT_ASSERT( (*it).first == it->second.m_val );
102 if ( it != m.cbegin() ) {
103 CPPUNIT_ASSERT( nPrevKey + 1 == it->first );
105 nPrevKey = it->first;
108 CPPUNIT_ASSERT( nCount == nLimit );
110 // Test iterator - random order
112 CPPUNIT_ASSERT( m.empty() );
115 for ( int i = 0; i < nLimit; ++i ) {
118 std::random_shuffle( nRand, nRand + nLimit );
120 for ( int i = 0; i < nLimit; ++i ) {
121 CPPUNIT_ASSERT( m.insert(i, i) );
123 CPPUNIT_MSG( PrintStat()(m, "Iterator test, random insert order") );
130 for ( set_iterator it = m.begin(), itEnd = m.end(); it != itEnd; ++it ) {
131 CPPUNIT_ASSERT( (*it).first == it->second.m_val );
132 CPPUNIT_ASSERT( m.find( it->first ));
133 it->second.m_val = (*it).first * 2;
135 if ( it != m.begin() ) {
136 CPPUNIT_ASSERT( nPrevKey + 1 == it->first );
138 nPrevKey = it->first;
141 CPPUNIT_ASSERT( nCount == nLimit );
146 for ( const_set_iterator it = m.cbegin(), itEnd = m.cend(); it != itEnd; ++it ) {
147 CPPUNIT_ASSERT( (*it).first * 2 == it->second.m_val );
149 if ( it != m.cbegin() ) {
150 CPPUNIT_ASSERT( nPrevKey + 1 == it->first );
152 nPrevKey = it->first;
155 CPPUNIT_ASSERT( nCount == nLimit );
159 for ( int i = 0; i < nLimit; ++i )
161 std::random_shuffle( arrItem, arrItem + nLimit );
163 typedef typename Map::value_type value_type;
164 typename Map::exempt_ptr ep;
167 for ( int i = 0; i < nLimit; ++i ) {
168 int nKey = arrItem[i];
171 value_type * pVal = m.get( nKey );
172 CPPUNIT_ASSERT( pVal != nullptr );
173 CPPUNIT_CHECK( pVal->first == nKey );
174 CPPUNIT_CHECK( pVal->second.m_val == nKey * 2 );
177 CPPUNIT_ASSERT( m.extract( ep, nKey ));
178 CPPUNIT_ASSERT( !ep.empty() );
179 CPPUNIT_CHECK( ep->first == nKey );
180 CPPUNIT_CHECK( ep->second.m_val == nKey * 2 );
185 CPPUNIT_CHECK( m.get( nKey ) == nullptr );
187 CPPUNIT_CHECK( !m.extract(ep, nKey) );
189 CPPUNIT_ASSERT( m.empty() );
191 // extract_with/get_with
192 for ( int i = 0; i < nLimit; ++i )
193 CPPUNIT_ASSERT( m.insert(arrItem[i], arrItem[i]*2) );
195 for ( int i = 0; i < nLimit; ++i ) {
196 int nKey = arrItem[i];
199 value_type * pVal = m.get_with( wrapped_item(nKey), wrapped_less() );
200 CPPUNIT_ASSERT( pVal != nullptr );
201 CPPUNIT_CHECK( pVal->first == nKey );
202 CPPUNIT_CHECK( pVal->second.m_val == nKey * 2 );
205 CPPUNIT_ASSERT( m.extract_with( ep, wrapped_item(nKey), wrapped_less() ));
206 CPPUNIT_ASSERT( !ep.empty() );
207 CPPUNIT_CHECK( ep->first == nKey );
208 CPPUNIT_CHECK( ep->second.m_val == nKey * 2 );
213 CPPUNIT_CHECK( m.get_with( wrapped_item(nKey), wrapped_less() ) == nullptr );
215 CPPUNIT_CHECK( !m.extract_with(ep, wrapped_item(nKey), wrapped_less()) );
217 CPPUNIT_ASSERT( m.empty() );
220 for ( int i = 0; i < nLimit; ++i )
221 CPPUNIT_ASSERT( m.insert(arrItem[i], arrItem[i]*2) );
222 for ( int i = 0; i < nLimit; ++i ) {
223 CPPUNIT_ASSERT( m.extract_min(ep));
224 CPPUNIT_ASSERT( !ep.empty() );
225 CPPUNIT_CHECK( ep->first == i );
226 CPPUNIT_CHECK( ep->second.m_val == i * 2 );
229 CPPUNIT_ASSERT( m.empty() );
230 CPPUNIT_CHECK( !m.extract_min(ep) );
233 for ( int i = 0; i < nLimit; ++i )
234 CPPUNIT_ASSERT( m.insert(arrItem[i], arrItem[i]*2) );
235 for ( int i = nLimit-1; i >= 0; --i ) {
236 CPPUNIT_ASSERT( m.extract_max(ep));
237 CPPUNIT_ASSERT( !ep.empty() );
238 CPPUNIT_CHECK( ep->first == i );
239 CPPUNIT_CHECK( ep->second.m_val == i * 2 );
242 CPPUNIT_ASSERT( m.empty() );
243 CPPUNIT_CHECK( !m.extract_max(ep) );
246 CPPUNIT_MSG( PrintStat()(m, nullptr) );
250 void SkipList_RCU_GPI_less();
251 void SkipList_RCU_GPI_cmp();
252 void SkipList_RCU_GPI_cmpless();
253 void SkipList_RCU_GPI_less_stat();
254 void SkipList_RCU_GPI_cmp_stat();
255 void SkipList_RCU_GPI_cmpless_stat();
256 void SkipList_RCU_GPI_xorshift_less();
257 void SkipList_RCU_GPI_xorshift_cmp();
258 void SkipList_RCU_GPI_xorshift_cmpless();
259 void SkipList_RCU_GPI_xorshift_less_stat();
260 void SkipList_RCU_GPI_xorshift_cmp_stat();
261 void SkipList_RCU_GPI_xorshift_cmpless_stat();
262 void SkipList_RCU_GPI_turbopas_less();
263 void SkipList_RCU_GPI_turbopas_cmp();
264 void SkipList_RCU_GPI_turbopas_cmpless();
265 void SkipList_RCU_GPI_turbopas_less_stat();
266 void SkipList_RCU_GPI_turbopas_cmp_stat();
267 void SkipList_RCU_GPI_turbopas_cmpless_stat();
268 void SkipList_RCU_GPI_michaelalloc_less();
269 void SkipList_RCU_GPI_michaelalloc_cmp();
270 void SkipList_RCU_GPI_michaelalloc_cmpless();
271 void SkipList_RCU_GPI_michaelalloc_less_stat();
272 void SkipList_RCU_GPI_michaelalloc_cmp_stat();
273 void SkipList_RCU_GPI_michaelalloc_cmpless_stat();
275 void SkipList_RCU_GPB_less();
276 void SkipList_RCU_GPB_cmp();
277 void SkipList_RCU_GPB_cmpless();
278 void SkipList_RCU_GPB_less_stat();
279 void SkipList_RCU_GPB_cmp_stat();
280 void SkipList_RCU_GPB_cmpless_stat();
281 void SkipList_RCU_GPB_xorshift_less();
282 void SkipList_RCU_GPB_xorshift_cmp();
283 void SkipList_RCU_GPB_xorshift_cmpless();
284 void SkipList_RCU_GPB_xorshift_less_stat();
285 void SkipList_RCU_GPB_xorshift_cmp_stat();
286 void SkipList_RCU_GPB_xorshift_cmpless_stat();
287 void SkipList_RCU_GPB_turbopas_less();
288 void SkipList_RCU_GPB_turbopas_cmp();
289 void SkipList_RCU_GPB_turbopas_cmpless();
290 void SkipList_RCU_GPB_turbopas_less_stat();
291 void SkipList_RCU_GPB_turbopas_cmp_stat();
292 void SkipList_RCU_GPB_turbopas_cmpless_stat();
293 void SkipList_RCU_GPB_michaelalloc_less();
294 void SkipList_RCU_GPB_michaelalloc_cmp();
295 void SkipList_RCU_GPB_michaelalloc_cmpless();
296 void SkipList_RCU_GPB_michaelalloc_less_stat();
297 void SkipList_RCU_GPB_michaelalloc_cmp_stat();
298 void SkipList_RCU_GPB_michaelalloc_cmpless_stat();
300 void SkipList_RCU_GPT_less();
301 void SkipList_RCU_GPT_cmp();
302 void SkipList_RCU_GPT_cmpless();
303 void SkipList_RCU_GPT_less_stat();
304 void SkipList_RCU_GPT_cmp_stat();
305 void SkipList_RCU_GPT_cmpless_stat();
306 void SkipList_RCU_GPT_xorshift_less();
307 void SkipList_RCU_GPT_xorshift_cmp();
308 void SkipList_RCU_GPT_xorshift_cmpless();
309 void SkipList_RCU_GPT_xorshift_less_stat();
310 void SkipList_RCU_GPT_xorshift_cmp_stat();
311 void SkipList_RCU_GPT_xorshift_cmpless_stat();
312 void SkipList_RCU_GPT_turbopas_less();
313 void SkipList_RCU_GPT_turbopas_cmp();
314 void SkipList_RCU_GPT_turbopas_cmpless();
315 void SkipList_RCU_GPT_turbopas_less_stat();
316 void SkipList_RCU_GPT_turbopas_cmp_stat();
317 void SkipList_RCU_GPT_turbopas_cmpless_stat();
318 void SkipList_RCU_GPT_michaelalloc_less();
319 void SkipList_RCU_GPT_michaelalloc_cmp();
320 void SkipList_RCU_GPT_michaelalloc_cmpless();
321 void SkipList_RCU_GPT_michaelalloc_less_stat();
322 void SkipList_RCU_GPT_michaelalloc_cmp_stat();
323 void SkipList_RCU_GPT_michaelalloc_cmpless_stat();
325 void SkipList_RCU_SHB_less();
326 void SkipList_RCU_SHB_cmp();
327 void SkipList_RCU_SHB_cmpless();
328 void SkipList_RCU_SHB_less_stat();
329 void SkipList_RCU_SHB_cmp_stat();
330 void SkipList_RCU_SHB_cmpless_stat();
331 void SkipList_RCU_SHB_xorshift_less();
332 void SkipList_RCU_SHB_xorshift_cmp();
333 void SkipList_RCU_SHB_xorshift_cmpless();
334 void SkipList_RCU_SHB_xorshift_less_stat();
335 void SkipList_RCU_SHB_xorshift_cmp_stat();
336 void SkipList_RCU_SHB_xorshift_cmpless_stat();
337 void SkipList_RCU_SHB_turbopas_less();
338 void SkipList_RCU_SHB_turbopas_cmp();
339 void SkipList_RCU_SHB_turbopas_cmpless();
340 void SkipList_RCU_SHB_turbopas_less_stat();
341 void SkipList_RCU_SHB_turbopas_cmp_stat();
342 void SkipList_RCU_SHB_turbopas_cmpless_stat();
343 void SkipList_RCU_SHB_michaelalloc_less();
344 void SkipList_RCU_SHB_michaelalloc_cmp();
345 void SkipList_RCU_SHB_michaelalloc_cmpless();
346 void SkipList_RCU_SHB_michaelalloc_less_stat();
347 void SkipList_RCU_SHB_michaelalloc_cmp_stat();
348 void SkipList_RCU_SHB_michaelalloc_cmpless_stat();
350 void SkipList_RCU_SHT_less();
351 void SkipList_RCU_SHT_cmp();
352 void SkipList_RCU_SHT_cmpless();
353 void SkipList_RCU_SHT_less_stat();
354 void SkipList_RCU_SHT_cmp_stat();
355 void SkipList_RCU_SHT_cmpless_stat();
356 void SkipList_RCU_SHT_xorshift_less();
357 void SkipList_RCU_SHT_xorshift_cmp();
358 void SkipList_RCU_SHT_xorshift_cmpless();
359 void SkipList_RCU_SHT_xorshift_less_stat();
360 void SkipList_RCU_SHT_xorshift_cmp_stat();
361 void SkipList_RCU_SHT_xorshift_cmpless_stat();
362 void SkipList_RCU_SHT_turbopas_less();
363 void SkipList_RCU_SHT_turbopas_cmp();
364 void SkipList_RCU_SHT_turbopas_cmpless();
365 void SkipList_RCU_SHT_turbopas_less_stat();
366 void SkipList_RCU_SHT_turbopas_cmp_stat();
367 void SkipList_RCU_SHT_turbopas_cmpless_stat();
368 void SkipList_RCU_SHT_michaelalloc_less();
369 void SkipList_RCU_SHT_michaelalloc_cmp();
370 void SkipList_RCU_SHT_michaelalloc_cmpless();
371 void SkipList_RCU_SHT_michaelalloc_less_stat();
372 void SkipList_RCU_SHT_michaelalloc_cmp_stat();
373 void SkipList_RCU_SHT_michaelalloc_cmpless_stat();
375 CPPUNIT_TEST_SUITE(SkipListMapRCUHdrTest)
376 CPPUNIT_TEST(SkipList_RCU_GPI_less)
377 CPPUNIT_TEST(SkipList_RCU_GPI_cmp)
378 CPPUNIT_TEST(SkipList_RCU_GPI_cmpless)
379 CPPUNIT_TEST(SkipList_RCU_GPI_less_stat)
380 CPPUNIT_TEST(SkipList_RCU_GPI_cmp_stat)
381 CPPUNIT_TEST(SkipList_RCU_GPI_cmpless_stat)
382 CPPUNIT_TEST(SkipList_RCU_GPI_xorshift_less)
383 CPPUNIT_TEST(SkipList_RCU_GPI_xorshift_cmp)
384 CPPUNIT_TEST(SkipList_RCU_GPI_xorshift_cmpless)
385 CPPUNIT_TEST(SkipList_RCU_GPI_xorshift_less_stat)
386 CPPUNIT_TEST(SkipList_RCU_GPI_xorshift_cmp_stat)
387 CPPUNIT_TEST(SkipList_RCU_GPI_xorshift_cmpless_stat)
388 CPPUNIT_TEST(SkipList_RCU_GPI_turbopas_less)
389 CPPUNIT_TEST(SkipList_RCU_GPI_turbopas_cmp)
390 CPPUNIT_TEST(SkipList_RCU_GPI_turbopas_cmpless)
391 CPPUNIT_TEST(SkipList_RCU_GPI_turbopas_less_stat)
392 CPPUNIT_TEST(SkipList_RCU_GPI_turbopas_cmp_stat)
393 CPPUNIT_TEST(SkipList_RCU_GPI_turbopas_cmpless_stat)
394 CPPUNIT_TEST(SkipList_RCU_GPI_michaelalloc_less)
395 CPPUNIT_TEST(SkipList_RCU_GPI_michaelalloc_cmp)
396 CPPUNIT_TEST(SkipList_RCU_GPI_michaelalloc_cmpless)
397 CPPUNIT_TEST(SkipList_RCU_GPI_michaelalloc_less_stat)
398 CPPUNIT_TEST(SkipList_RCU_GPI_michaelalloc_cmp_stat)
399 CPPUNIT_TEST(SkipList_RCU_GPI_michaelalloc_cmpless_stat)
401 CPPUNIT_TEST(SkipList_RCU_GPB_less)
402 CPPUNIT_TEST(SkipList_RCU_GPB_cmp)
403 CPPUNIT_TEST(SkipList_RCU_GPB_cmpless)
404 CPPUNIT_TEST(SkipList_RCU_GPB_less_stat)
405 CPPUNIT_TEST(SkipList_RCU_GPB_cmp_stat)
406 CPPUNIT_TEST(SkipList_RCU_GPB_cmpless_stat)
407 CPPUNIT_TEST(SkipList_RCU_GPB_xorshift_less)
408 CPPUNIT_TEST(SkipList_RCU_GPB_xorshift_cmp)
409 CPPUNIT_TEST(SkipList_RCU_GPB_xorshift_cmpless)
410 CPPUNIT_TEST(SkipList_RCU_GPB_xorshift_less_stat)
411 CPPUNIT_TEST(SkipList_RCU_GPB_xorshift_cmp_stat)
412 CPPUNIT_TEST(SkipList_RCU_GPB_xorshift_cmpless_stat)
413 CPPUNIT_TEST(SkipList_RCU_GPB_turbopas_less)
414 CPPUNIT_TEST(SkipList_RCU_GPB_turbopas_cmp)
415 CPPUNIT_TEST(SkipList_RCU_GPB_turbopas_cmpless)
416 CPPUNIT_TEST(SkipList_RCU_GPB_turbopas_less_stat)
417 CPPUNIT_TEST(SkipList_RCU_GPB_turbopas_cmp_stat)
418 CPPUNIT_TEST(SkipList_RCU_GPB_turbopas_cmpless_stat)
419 CPPUNIT_TEST(SkipList_RCU_GPB_michaelalloc_less)
420 CPPUNIT_TEST(SkipList_RCU_GPB_michaelalloc_cmp)
421 CPPUNIT_TEST(SkipList_RCU_GPB_michaelalloc_cmpless)
422 CPPUNIT_TEST(SkipList_RCU_GPB_michaelalloc_less_stat)
423 CPPUNIT_TEST(SkipList_RCU_GPB_michaelalloc_cmp_stat)
424 CPPUNIT_TEST(SkipList_RCU_GPB_michaelalloc_cmpless_stat)
426 CPPUNIT_TEST(SkipList_RCU_GPT_less)
427 CPPUNIT_TEST(SkipList_RCU_GPT_cmp)
428 CPPUNIT_TEST(SkipList_RCU_GPT_cmpless)
429 CPPUNIT_TEST(SkipList_RCU_GPT_less_stat)
430 CPPUNIT_TEST(SkipList_RCU_GPT_cmp_stat)
431 CPPUNIT_TEST(SkipList_RCU_GPT_cmpless_stat)
432 CPPUNIT_TEST(SkipList_RCU_GPT_xorshift_less)
433 CPPUNIT_TEST(SkipList_RCU_GPT_xorshift_cmp)
434 CPPUNIT_TEST(SkipList_RCU_GPT_xorshift_cmpless)
435 CPPUNIT_TEST(SkipList_RCU_GPT_xorshift_less_stat)
436 CPPUNIT_TEST(SkipList_RCU_GPT_xorshift_cmp_stat)
437 CPPUNIT_TEST(SkipList_RCU_GPT_xorshift_cmpless_stat)
438 CPPUNIT_TEST(SkipList_RCU_GPT_turbopas_less)
439 CPPUNIT_TEST(SkipList_RCU_GPT_turbopas_cmp)
440 CPPUNIT_TEST(SkipList_RCU_GPT_turbopas_cmpless)
441 CPPUNIT_TEST(SkipList_RCU_GPT_turbopas_less_stat)
442 CPPUNIT_TEST(SkipList_RCU_GPT_turbopas_cmp_stat)
443 CPPUNIT_TEST(SkipList_RCU_GPT_turbopas_cmpless_stat)
444 CPPUNIT_TEST(SkipList_RCU_GPT_michaelalloc_less)
445 CPPUNIT_TEST(SkipList_RCU_GPT_michaelalloc_cmp)
446 CPPUNIT_TEST(SkipList_RCU_GPT_michaelalloc_cmpless)
447 CPPUNIT_TEST(SkipList_RCU_GPT_michaelalloc_less_stat)
448 CPPUNIT_TEST(SkipList_RCU_GPT_michaelalloc_cmp_stat)
449 CPPUNIT_TEST(SkipList_RCU_GPT_michaelalloc_cmpless_stat)
451 CPPUNIT_TEST(SkipList_RCU_SHB_less)
452 CPPUNIT_TEST(SkipList_RCU_SHB_cmp)
453 CPPUNIT_TEST(SkipList_RCU_SHB_cmpless)
454 CPPUNIT_TEST(SkipList_RCU_SHB_less_stat)
455 CPPUNIT_TEST(SkipList_RCU_SHB_cmp_stat)
456 CPPUNIT_TEST(SkipList_RCU_SHB_cmpless_stat)
457 CPPUNIT_TEST(SkipList_RCU_SHB_xorshift_less)
458 CPPUNIT_TEST(SkipList_RCU_SHB_xorshift_cmp)
459 CPPUNIT_TEST(SkipList_RCU_SHB_xorshift_cmpless)
460 CPPUNIT_TEST(SkipList_RCU_SHB_xorshift_less_stat)
461 CPPUNIT_TEST(SkipList_RCU_SHB_xorshift_cmp_stat)
462 CPPUNIT_TEST(SkipList_RCU_SHB_xorshift_cmpless_stat)
463 CPPUNIT_TEST(SkipList_RCU_SHB_turbopas_less)
464 CPPUNIT_TEST(SkipList_RCU_SHB_turbopas_cmp)
465 CPPUNIT_TEST(SkipList_RCU_SHB_turbopas_cmpless)
466 CPPUNIT_TEST(SkipList_RCU_SHB_turbopas_less_stat)
467 CPPUNIT_TEST(SkipList_RCU_SHB_turbopas_cmp_stat)
468 CPPUNIT_TEST(SkipList_RCU_SHB_turbopas_cmpless_stat)
469 CPPUNIT_TEST(SkipList_RCU_SHB_michaelalloc_less)
470 CPPUNIT_TEST(SkipList_RCU_SHB_michaelalloc_cmp)
471 CPPUNIT_TEST(SkipList_RCU_SHB_michaelalloc_cmpless)
472 CPPUNIT_TEST(SkipList_RCU_SHB_michaelalloc_less_stat)
473 CPPUNIT_TEST(SkipList_RCU_SHB_michaelalloc_cmp_stat)
474 CPPUNIT_TEST(SkipList_RCU_SHB_michaelalloc_cmpless_stat)
476 CPPUNIT_TEST(SkipList_RCU_SHT_less)
477 CPPUNIT_TEST(SkipList_RCU_SHT_cmp)
478 CPPUNIT_TEST(SkipList_RCU_SHT_cmpless)
479 CPPUNIT_TEST(SkipList_RCU_SHT_less_stat)
480 CPPUNIT_TEST(SkipList_RCU_SHT_cmp_stat)
481 CPPUNIT_TEST(SkipList_RCU_SHT_cmpless_stat)
482 CPPUNIT_TEST(SkipList_RCU_SHT_xorshift_less)
483 CPPUNIT_TEST(SkipList_RCU_SHT_xorshift_cmp)
484 CPPUNIT_TEST(SkipList_RCU_SHT_xorshift_cmpless)
485 CPPUNIT_TEST(SkipList_RCU_SHT_xorshift_less_stat)
486 CPPUNIT_TEST(SkipList_RCU_SHT_xorshift_cmp_stat)
487 CPPUNIT_TEST(SkipList_RCU_SHT_xorshift_cmpless_stat)
488 CPPUNIT_TEST(SkipList_RCU_SHT_turbopas_less)
489 CPPUNIT_TEST(SkipList_RCU_SHT_turbopas_cmp)
490 CPPUNIT_TEST(SkipList_RCU_SHT_turbopas_cmpless)
491 CPPUNIT_TEST(SkipList_RCU_SHT_turbopas_less_stat)
492 CPPUNIT_TEST(SkipList_RCU_SHT_turbopas_cmp_stat)
493 CPPUNIT_TEST(SkipList_RCU_SHT_turbopas_cmpless_stat)
494 CPPUNIT_TEST(SkipList_RCU_SHT_michaelalloc_less)
495 CPPUNIT_TEST(SkipList_RCU_SHT_michaelalloc_cmp)
496 CPPUNIT_TEST(SkipList_RCU_SHT_michaelalloc_cmpless)
497 CPPUNIT_TEST(SkipList_RCU_SHT_michaelalloc_less_stat)
498 CPPUNIT_TEST(SkipList_RCU_SHT_michaelalloc_cmp_stat)
499 CPPUNIT_TEST(SkipList_RCU_SHT_michaelalloc_cmpless_stat)
501 CPPUNIT_TEST_SUITE_END()
507 #endif // #ifndef __CDSTEST_HDR_SKIPLIST_MAP_RCU_H