3 #include "set/hdr_set.h"
7 class SkipListSetHdrTest: public HashSetHdrTest
9 typedef HashSetHdrTest base_class;
11 typedef base_class::other_item wrapped_item;
12 typedef base_class::other_less wrapped_less;
14 template <class Set, typename PrintStat >
18 base_class::test_int_with( s );
20 static int const nLimit = 10000;
21 typedef typename Set::iterator set_iterator;
22 typedef typename Set::const_iterator const_set_iterator;
23 typedef typename Set::guarded_ptr guarded_ptr;
28 int arrRandom[nLimit];
29 for ( int i = 0; i < nLimit; ++i )
31 std::random_shuffle( arrRandom, arrRandom + nLimit );
34 // Test iterator - ascending order
36 CPPUNIT_ASSERT( s.empty() );
38 for ( int i = 0; i < nLimit; ++i ) {
41 CPPUNIT_CHECK( gp.empty() );
43 CPPUNIT_ASSERT( s.insert(i) );
47 CPPUNIT_ASSERT( !gp.empty());
48 CPPUNIT_CHECK( gp->nKey == i );
49 CPPUNIT_CHECK( gp->nVal == i );
52 CPPUNIT_MSG( PrintStat()(s, "Iterator test, ascending insert order") );
56 for ( set_iterator it = s.begin(), itEnd = s.end(); it != itEnd; ++it ) {
57 CPPUNIT_ASSERT( (*it).nKey == it->nVal );
58 CPPUNIT_ASSERT( s.find( it->nKey ));
59 it->nVal = (*it).nKey * 2;
61 if ( it != s.begin() ) {
62 CPPUNIT_ASSERT( nPrevKey + 1 == it->nKey );
67 gp = s.get( it->nKey );
69 CPPUNIT_ASSERT( !gp.empty() );
70 CPPUNIT_CHECK( gp->nKey == it->nKey );
71 CPPUNIT_CHECK( gp->nVal == it->nKey * 2 );
74 CPPUNIT_ASSERT( nCount == nLimit );
77 for ( const_set_iterator it = s.cbegin(), itEnd = s.cend(); it != itEnd; ++it ) {
78 CPPUNIT_ASSERT( (*it).nKey * 2 == it->nVal );
80 if ( it != s.cbegin() ) {
81 CPPUNIT_ASSERT( nPrevKey + 1 == it->nKey );
85 CPPUNIT_ASSERT( nCount == nLimit );
87 // Test iterator - descending order
89 CPPUNIT_ASSERT( s.empty() );
91 for ( int i = nLimit; i > 0; --i ) {
92 gp = s.get_with( i - 1, base_class::less<typename Set::value_type>());
94 CPPUNIT_CHECK( gp.empty() );
96 CPPUNIT_ASSERT( s.insert( std::make_pair(i - 1, (i-1) * 2) ));
99 gp = s.get_with( i - 1, base_class::less<typename Set::value_type>());
101 CPPUNIT_ASSERT( !gp.empty());
102 CPPUNIT_CHECK( gp->nKey == i-1 );
103 CPPUNIT_CHECK( gp->nVal == (i-1) * 2 );
106 CPPUNIT_MSG( PrintStat()(s, "Iterator test, descending insert order") );
110 for ( set_iterator it = s.begin(), itEnd = s.end(); it != itEnd; ++it ) {
111 CPPUNIT_ASSERT( (*it).nKey * 2 == it->nVal );
112 CPPUNIT_ASSERT( s.find( it->nKey ));
113 it->nVal = (*it).nKey;
115 if ( it != s.begin() ) {
116 CPPUNIT_ASSERT( nPrevKey + 1 == it->nKey );
120 CPPUNIT_ASSERT( nCount == nLimit );
123 for ( const_set_iterator it = s.cbegin(), itEnd = s.cend(); it != itEnd; ++it ) {
124 CPPUNIT_ASSERT( (*it).nKey == it->nVal );
126 if ( it != s.cbegin() ) {
127 CPPUNIT_ASSERT( nPrevKey + 1 == it->nKey );
131 CPPUNIT_ASSERT( nCount == nLimit );
133 // Test iterator - random order
135 CPPUNIT_ASSERT( s.empty() );
137 for ( int i = 0; i < nLimit; ++i )
138 CPPUNIT_ASSERT( s.insert( arrRandom[i]) );
139 CPPUNIT_MSG( PrintStat()(s, "Iterator test, random insert order") );
144 for ( set_iterator it = s.begin(), itEnd = s.end(); it != itEnd; ++it ) {
145 CPPUNIT_ASSERT( (*it).nKey == it->nVal );
146 CPPUNIT_ASSERT( s.find( it->nKey ));
147 it->nVal = (*it).nKey * 2;
149 if ( it != s.begin() ) {
150 CPPUNIT_ASSERT( nPrevKey + 1 == it->nKey );
154 CPPUNIT_ASSERT( nCount == nLimit );
157 for ( const_set_iterator it = s.cbegin(), itEnd = s.cend(); it != itEnd; ++it ) {
158 CPPUNIT_ASSERT( (*it).nKey * 2 == it->nVal );
160 if ( it != s.cbegin() ) {
161 CPPUNIT_ASSERT( nPrevKey + 1 == it->nKey );
165 CPPUNIT_ASSERT( nCount == nLimit );
169 typedef typename base_class::less<typename Set::value_type> less_predicate;
170 typename Set::guarded_ptr gp;
173 for ( int i = 0; i < nLimit; ++i ) {
174 int nKey = arrRandom[i];
176 CPPUNIT_ASSERT( gp );
177 CPPUNIT_ASSERT( !gp.empty());
178 CPPUNIT_CHECK( gp->nKey == nKey );
179 CPPUNIT_CHECK( gp->nVal == nKey * 2);
182 gp = s.extract( nKey );
183 CPPUNIT_ASSERT( gp );
184 CPPUNIT_ASSERT( !gp.empty());
185 CPPUNIT_CHECK( gp->nKey == nKey );
186 CPPUNIT_CHECK( gp->nVal == nKey * 2);
190 CPPUNIT_CHECK( !gp );
191 CPPUNIT_ASSERT( gp.empty());
192 CPPUNIT_ASSERT( !s.extract(nKey));
194 CPPUNIT_ASSERT( s.empty() );
196 // extract_with/get_with
197 for ( int i = 0; i < nLimit; ++i )
198 CPPUNIT_ASSERT( s.insert( arrRandom[i]) );
200 for ( int i = 0; i < nLimit; ++i ) {
201 int nKey = arrRandom[i];
202 gp = s.get_with( wrapped_item( nKey ), wrapped_less());
203 CPPUNIT_ASSERT( gp );
204 CPPUNIT_ASSERT( !gp.empty());
205 CPPUNIT_CHECK( gp->nKey == nKey );
206 CPPUNIT_CHECK( gp->nVal == nKey );
209 gp = s.extract_with( wrapped_item( nKey ), wrapped_less());
210 CPPUNIT_ASSERT( gp );
211 CPPUNIT_ASSERT( !gp.empty());
212 CPPUNIT_CHECK( gp->nKey == nKey );
213 CPPUNIT_CHECK( gp->nVal == nKey );
216 gp = s.get_with( wrapped_item( nKey ), wrapped_less());
217 CPPUNIT_CHECK( !gp );
218 CPPUNIT_ASSERT( !s.extract_with( wrapped_item(nKey), wrapped_less() ));
220 CPPUNIT_ASSERT( 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 gp = s.extract_min();
228 CPPUNIT_ASSERT( gp );
229 CPPUNIT_ASSERT( !gp.empty());
230 CPPUNIT_CHECK( gp->nKey == i );
231 CPPUNIT_CHECK( gp->nVal == i );
235 CPPUNIT_CHECK( !gp );
237 CPPUNIT_ASSERT( s.empty() );
238 CPPUNIT_CHECK( !s.extract_min());
239 CPPUNIT_CHECK( !s.extract_max());
242 for ( int i = 0; i < nLimit; ++i )
243 CPPUNIT_ASSERT( s.insert( arrRandom[i]) );
245 for ( int i = nLimit-1; i >= 0; --i ) {
246 gp = s.extract_max();
247 CPPUNIT_ASSERT( gp );
248 CPPUNIT_ASSERT( !gp.empty());
249 CPPUNIT_CHECK( gp->nKey == i );
250 CPPUNIT_CHECK( gp->nVal == i );
254 CPPUNIT_CHECK( !gp );
256 CPPUNIT_ASSERT( s.empty() );
257 CPPUNIT_CHECK( !s.extract_min());
258 CPPUNIT_CHECK( !s.extract_max());
261 CPPUNIT_MSG( PrintStat()(s, nullptr) );
264 template <class Set, typename PrintStat >
267 typedef typename Set::value_type value_type;
268 typedef typename Set::iterator iterator;
269 typedef typename Set::const_iterator const_iterator;
274 CPPUNIT_ASSERT( s.empty() );
275 CPPUNIT_ASSERT( check_size( s, 0 ));
279 CPPUNIT_ASSERT( it != s.end() );
280 CPPUNIT_ASSERT( it->key() == 10 );
281 CPPUNIT_ASSERT( it->val() == 10 );
282 CPPUNIT_ASSERT( !s.empty() );
283 CPPUNIT_ASSERT( check_size( s, 1 ));
284 CPPUNIT_ASSERT( s.insert( 10 ) == s.end() );
286 it = s.insert( std::make_pair( 50, 25 ));
287 CPPUNIT_ASSERT( it != s.end() );
288 CPPUNIT_ASSERT( it->key() == 50 );
289 CPPUNIT_ASSERT( it->val() == 25 );
290 CPPUNIT_ASSERT( !s.empty() );
291 CPPUNIT_ASSERT( check_size( s, 2 ));
292 CPPUNIT_ASSERT( s.insert( 50 ) == s.end() );
295 std::pair< iterator, bool> ensureResult;
296 ensureResult = s.ensure( 20 );
297 CPPUNIT_ASSERT( ensureResult.first != s.end() );
298 CPPUNIT_ASSERT( ensureResult.second );
299 CPPUNIT_ASSERT( ensureResult.first->key() == 20 );
300 CPPUNIT_ASSERT( ensureResult.first->val() == 20 );
301 CPPUNIT_ASSERT( !s.empty() );
302 CPPUNIT_ASSERT( check_size( s, 3 ));
304 ensureResult = s.ensure( std::make_pair( 20, 200 ));
305 CPPUNIT_ASSERT( ensureResult.first != s.end() );
306 CPPUNIT_ASSERT( !ensureResult.second );
307 CPPUNIT_ASSERT( ensureResult.first->key() == 20 );
308 CPPUNIT_ASSERT( ensureResult.first->val() == 20 );
309 CPPUNIT_ASSERT( !s.empty() );
310 CPPUNIT_ASSERT( check_size( s, 3 ));
311 ensureResult.first->nVal = 22;
313 ensureResult = s.ensure( std::make_pair( 30, 33 ));
314 CPPUNIT_ASSERT( ensureResult.first != s.end() );
315 CPPUNIT_ASSERT( ensureResult.second );
316 CPPUNIT_ASSERT( ensureResult.first->key() == 30 );
317 CPPUNIT_ASSERT( ensureResult.first->val() == 33 );
318 CPPUNIT_ASSERT( !s.empty() );
319 CPPUNIT_ASSERT( check_size( s, 4 ));
323 CPPUNIT_ASSERT( it != s.end() );
324 CPPUNIT_ASSERT( it->key() == 10 );
325 CPPUNIT_ASSERT( it->val() == 10 );
328 CPPUNIT_ASSERT( it != s.end() );
329 CPPUNIT_ASSERT( it->key() == 20 );
330 CPPUNIT_ASSERT( it->val() == 22 );
332 it = s.find_with( 30, base_class::less<value_type>() );
333 CPPUNIT_ASSERT( it != s.end() );
334 CPPUNIT_ASSERT( it->key() == 30 );
335 CPPUNIT_ASSERT( it->val() == 33 );
338 CPPUNIT_ASSERT( it == s.end() );
341 CPPUNIT_ASSERT( it != s.end() );
342 CPPUNIT_ASSERT( it->key() == 50 );
343 CPPUNIT_ASSERT( it->val() == 25 );
346 it = s.emplace( 151 ) ; // key = 151, val = 151
347 CPPUNIT_ASSERT( it != s.end() );
348 CPPUNIT_ASSERT( it->key() == 151 );
349 CPPUNIT_ASSERT( it->val() == 151 );
351 it = s.emplace( 174, 471 ) ; // key == 174, val = 471
352 CPPUNIT_ASSERT( it != s.end() );
353 CPPUNIT_ASSERT( it->key() == 174 );
354 CPPUNIT_ASSERT( it->val() == 471 );
356 it = s.emplace( std::make_pair( 190, 91 )) ; // key == 190, val = 91
357 CPPUNIT_ASSERT( it != s.end() );
358 CPPUNIT_ASSERT( it->key() == 190 );
359 CPPUNIT_ASSERT( it->val() == 91 );
362 CPPUNIT_ASSERT( it != s.end() );
363 CPPUNIT_ASSERT( it->key() == 174 );
364 CPPUNIT_ASSERT( it->val() == 471 );
367 CPPUNIT_ASSERT( it != s.end() );
368 CPPUNIT_ASSERT( it->key() == 190 );
369 CPPUNIT_ASSERT( it->val() == 91 );
372 CPPUNIT_ASSERT( it != s.end() );
373 CPPUNIT_ASSERT( it->key() == 151 );
374 CPPUNIT_ASSERT( it->val() == 151 );
376 CPPUNIT_ASSERT( !s.empty() );
378 CPPUNIT_ASSERT( s.empty() );
379 CPPUNIT_ASSERT( check_size( s, 0 ));
382 for ( int i = 500; i > 0; --i ) {
383 CPPUNIT_ASSERT( s.insert( std::make_pair( i, i * 2) ) != s.end() );
385 typename Set::value_type * pVal = s.get_min();
386 CPPUNIT_ASSERT( pVal != nullptr );
387 CPPUNIT_CHECK( pVal->nKey == i );
388 CPPUNIT_CHECK( pVal->nVal == i * 2 );
390 CPPUNIT_ASSERT( !s.empty() );
392 CPPUNIT_ASSERT( s.empty() );
393 CPPUNIT_ASSERT( check_size( s, 0 ));
395 CPPUNIT_CHECK( s.get_min() == nullptr );
396 CPPUNIT_CHECK( s.get_max() == nullptr );
399 for ( int i = 0; i < 500; ++i ) {
400 CPPUNIT_ASSERT( s.insert( std::make_pair( i, i * 2) ) != s.end() );
402 typename Set::value_type * pVal = s.get_max();
403 CPPUNIT_ASSERT( pVal != nullptr );
404 CPPUNIT_CHECK( pVal->nKey == i );
405 CPPUNIT_CHECK( pVal->nVal == i * 2 );
407 CPPUNIT_ASSERT( !s.empty() );
408 CPPUNIT_ASSERT( check_size( s, 500 ));
410 for ( iterator it = s.begin(), itEnd = s.end(); it != itEnd; ++it ) {
411 CPPUNIT_ASSERT( (*it).nKey * 2 == it->nVal );
412 it->nVal = (*it).nKey;
415 Set const& refSet = s;
416 for ( const_iterator it = refSet.begin(), itEnd = refSet.end(); it != itEnd; ++it ) {
417 CPPUNIT_ASSERT( (*it).nKey == it->nVal );
422 void SkipList_HP_less();
423 void SkipList_HP_cmp();
424 void SkipList_HP_cmpless();
425 void SkipList_HP_less_stat();
426 void SkipList_HP_cmp_stat();
427 void SkipList_HP_cmpless_stat();
428 void SkipList_HP_xorshift_less();
429 void SkipList_HP_xorshift_cmp();
430 void SkipList_HP_xorshift_cmpless();
431 void SkipList_HP_xorshift_less_stat();
432 void SkipList_HP_xorshift_cmp_stat();
433 void SkipList_HP_xorshift_cmpless_stat();
434 void SkipList_HP_turbopas_less();
435 void SkipList_HP_turbopas_cmp();
436 void SkipList_HP_turbopas_cmpless();
437 void SkipList_HP_turbopas_less_stat();
438 void SkipList_HP_turbopas_cmp_stat();
439 void SkipList_HP_turbopas_cmpless_stat();
440 void SkipList_HP_michaelalloc_less();
441 void SkipList_HP_michaelalloc_cmp();
442 void SkipList_HP_michaelalloc_cmpless();
443 void SkipList_HP_michaelalloc_less_stat();
444 void SkipList_HP_michaelalloc_cmp_stat();
445 void SkipList_HP_michaelalloc_cmpless_stat();
447 void SkipList_DHP_less();
448 void SkipList_DHP_cmp();
449 void SkipList_DHP_cmpless();
450 void SkipList_DHP_less_stat();
451 void SkipList_DHP_cmp_stat();
452 void SkipList_DHP_cmpless_stat();
453 void SkipList_DHP_xorshift_less();
454 void SkipList_DHP_xorshift_cmp();
455 void SkipList_DHP_xorshift_cmpless();
456 void SkipList_DHP_xorshift_less_stat();
457 void SkipList_DHP_xorshift_cmp_stat();
458 void SkipList_DHP_xorshift_cmpless_stat();
459 void SkipList_DHP_turbopas_less();
460 void SkipList_DHP_turbopas_cmp();
461 void SkipList_DHP_turbopas_cmpless();
462 void SkipList_DHP_turbopas_less_stat();
463 void SkipList_DHP_turbopas_cmp_stat();
464 void SkipList_DHP_turbopas_cmpless_stat();
465 void SkipList_DHP_michaelalloc_less();
466 void SkipList_DHP_michaelalloc_cmp();
467 void SkipList_DHP_michaelalloc_cmpless();
468 void SkipList_DHP_michaelalloc_less_stat();
469 void SkipList_DHP_michaelalloc_cmp_stat();
470 void SkipList_DHP_michaelalloc_cmpless_stat();
472 void SkipList_NOGC_less();
473 void SkipList_NOGC_cmp();
474 void SkipList_NOGC_cmpless();
475 void SkipList_NOGC_less_stat();
476 void SkipList_NOGC_cmp_stat();
477 void SkipList_NOGC_cmpless_stat();
478 void SkipList_NOGC_xorshift_less();
479 void SkipList_NOGC_xorshift_cmp();
480 void SkipList_NOGC_xorshift_cmpless();
481 void SkipList_NOGC_xorshift_less_stat();
482 void SkipList_NOGC_xorshift_cmp_stat();
483 void SkipList_NOGC_xorshift_cmpless_stat();
484 void SkipList_NOGC_turbopas_less();
485 void SkipList_NOGC_turbopas_cmp();
486 void SkipList_NOGC_turbopas_cmpless();
487 void SkipList_NOGC_turbopas_less_stat();
488 void SkipList_NOGC_turbopas_cmp_stat();
489 void SkipList_NOGC_turbopas_cmpless_stat();
490 void SkipList_NOGC_michaelalloc_less();
491 void SkipList_NOGC_michaelalloc_cmp();
492 void SkipList_NOGC_michaelalloc_cmpless();
493 void SkipList_NOGC_michaelalloc_less_stat();
494 void SkipList_NOGC_michaelalloc_cmp_stat();
495 void SkipList_NOGC_michaelalloc_cmpless_stat();
497 CPPUNIT_TEST_SUITE(SkipListSetHdrTest)
498 CPPUNIT_TEST(SkipList_HP_less)
499 CPPUNIT_TEST(SkipList_HP_cmp)
500 CPPUNIT_TEST(SkipList_HP_cmpless)
501 CPPUNIT_TEST(SkipList_HP_less_stat)
502 CPPUNIT_TEST(SkipList_HP_cmp_stat)
503 CPPUNIT_TEST(SkipList_HP_cmpless_stat)
504 CPPUNIT_TEST(SkipList_HP_xorshift_less)
505 CPPUNIT_TEST(SkipList_HP_xorshift_cmp)
506 CPPUNIT_TEST(SkipList_HP_xorshift_cmpless)
507 CPPUNIT_TEST(SkipList_HP_xorshift_less_stat)
508 CPPUNIT_TEST(SkipList_HP_xorshift_cmp_stat)
509 CPPUNIT_TEST(SkipList_HP_xorshift_cmpless_stat)
510 CPPUNIT_TEST(SkipList_HP_turbopas_less)
511 CPPUNIT_TEST(SkipList_HP_turbopas_cmp)
512 CPPUNIT_TEST(SkipList_HP_turbopas_cmpless)
513 CPPUNIT_TEST(SkipList_HP_turbopas_less_stat)
514 CPPUNIT_TEST(SkipList_HP_turbopas_cmp_stat)
515 CPPUNIT_TEST(SkipList_HP_turbopas_cmpless_stat)
516 CPPUNIT_TEST(SkipList_HP_michaelalloc_less)
517 CPPUNIT_TEST(SkipList_HP_michaelalloc_cmp)
518 CPPUNIT_TEST(SkipList_HP_michaelalloc_cmpless)
519 CPPUNIT_TEST(SkipList_HP_michaelalloc_less_stat)
520 CPPUNIT_TEST(SkipList_HP_michaelalloc_cmp_stat)
521 CPPUNIT_TEST(SkipList_HP_michaelalloc_cmpless_stat)
523 CPPUNIT_TEST(SkipList_DHP_less)
524 CPPUNIT_TEST(SkipList_DHP_cmp)
525 CPPUNIT_TEST(SkipList_DHP_cmpless)
526 CPPUNIT_TEST(SkipList_DHP_less_stat)
527 CPPUNIT_TEST(SkipList_DHP_cmp_stat)
528 CPPUNIT_TEST(SkipList_DHP_cmpless_stat)
529 CPPUNIT_TEST(SkipList_DHP_xorshift_less)
530 CPPUNIT_TEST(SkipList_DHP_xorshift_cmp)
531 CPPUNIT_TEST(SkipList_DHP_xorshift_cmpless)
532 CPPUNIT_TEST(SkipList_DHP_xorshift_less_stat)
533 CPPUNIT_TEST(SkipList_DHP_xorshift_cmp_stat)
534 CPPUNIT_TEST(SkipList_DHP_xorshift_cmpless_stat)
535 CPPUNIT_TEST(SkipList_DHP_turbopas_less)
536 CPPUNIT_TEST(SkipList_DHP_turbopas_cmp)
537 CPPUNIT_TEST(SkipList_DHP_turbopas_cmpless)
538 CPPUNIT_TEST(SkipList_DHP_turbopas_less_stat)
539 CPPUNIT_TEST(SkipList_DHP_turbopas_cmp_stat)
540 CPPUNIT_TEST(SkipList_DHP_turbopas_cmpless_stat)
541 CPPUNIT_TEST(SkipList_DHP_michaelalloc_less)
542 CPPUNIT_TEST(SkipList_DHP_michaelalloc_cmp)
543 CPPUNIT_TEST(SkipList_DHP_michaelalloc_cmpless)
544 CPPUNIT_TEST(SkipList_DHP_michaelalloc_less_stat)
545 CPPUNIT_TEST(SkipList_DHP_michaelalloc_cmp_stat)
546 CPPUNIT_TEST(SkipList_DHP_michaelalloc_cmpless_stat)
548 CPPUNIT_TEST(SkipList_NOGC_less)
549 CPPUNIT_TEST(SkipList_NOGC_cmp)
550 CPPUNIT_TEST(SkipList_NOGC_cmpless)
551 CPPUNIT_TEST(SkipList_NOGC_less_stat)
552 CPPUNIT_TEST(SkipList_NOGC_cmp_stat)
553 CPPUNIT_TEST(SkipList_NOGC_cmpless_stat)
554 CPPUNIT_TEST(SkipList_NOGC_xorshift_less)
555 CPPUNIT_TEST(SkipList_NOGC_xorshift_cmp)
556 CPPUNIT_TEST(SkipList_NOGC_xorshift_cmpless)
557 CPPUNIT_TEST(SkipList_NOGC_xorshift_less_stat)
558 CPPUNIT_TEST(SkipList_NOGC_xorshift_cmp_stat)
559 CPPUNIT_TEST(SkipList_NOGC_xorshift_cmpless_stat)
560 CPPUNIT_TEST(SkipList_NOGC_turbopas_less)
561 CPPUNIT_TEST(SkipList_NOGC_turbopas_cmp)
562 CPPUNIT_TEST(SkipList_NOGC_turbopas_cmpless)
563 CPPUNIT_TEST(SkipList_NOGC_turbopas_less_stat)
564 CPPUNIT_TEST(SkipList_NOGC_turbopas_cmp_stat)
565 CPPUNIT_TEST(SkipList_NOGC_turbopas_cmpless_stat)
566 CPPUNIT_TEST(SkipList_NOGC_michaelalloc_less)
567 CPPUNIT_TEST(SkipList_NOGC_michaelalloc_cmp)
568 CPPUNIT_TEST(SkipList_NOGC_michaelalloc_cmpless)
569 CPPUNIT_TEST(SkipList_NOGC_michaelalloc_less_stat)
570 CPPUNIT_TEST(SkipList_NOGC_michaelalloc_cmp_stat)
571 CPPUNIT_TEST(SkipList_NOGC_michaelalloc_cmpless_stat)
573 CPPUNIT_TEST_SUITE_END()