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 );
51 CPPUNIT_MSG( PrintStat()(s, "Iterator test, ascending insert order") );
55 for ( set_iterator it = s.begin(), itEnd = s.end(); it != itEnd; ++it ) {
56 CPPUNIT_ASSERT( (*it).nKey == it->nVal );
57 CPPUNIT_ASSERT( s.find( it->nKey ));
58 it->nVal = (*it).nKey * 2;
60 if ( it != s.begin() ) {
61 CPPUNIT_ASSERT( nPrevKey + 1 == it->nKey );
66 gp = s.get( it->nKey );
68 CPPUNIT_ASSERT( !gp.empty() );
69 CPPUNIT_CHECK( gp->nKey == it->nKey );
70 CPPUNIT_CHECK( gp->nVal == it->nKey * 2 );
72 CPPUNIT_ASSERT( nCount == nLimit );
75 for ( const_set_iterator it = s.cbegin(), itEnd = s.cend(); it != itEnd; ++it ) {
76 CPPUNIT_ASSERT( (*it).nKey * 2 == it->nVal );
78 if ( it != s.cbegin() ) {
79 CPPUNIT_ASSERT( nPrevKey + 1 == it->nKey );
83 CPPUNIT_ASSERT( nCount == nLimit );
85 // Test iterator - descending order
87 CPPUNIT_ASSERT( s.empty() );
89 for ( int i = nLimit; i > 0; --i ) {
90 gp = s.get_with( i - 1, base_class::less<typename Set::value_type>());
92 CPPUNIT_CHECK( gp.empty() );
94 CPPUNIT_ASSERT( s.insert( std::make_pair(i - 1, (i-1) * 2) ));
97 gp = s.get_with( i - 1, base_class::less<typename Set::value_type>());
99 CPPUNIT_ASSERT( !gp.empty());
100 CPPUNIT_CHECK( gp->nKey == i-1 );
101 CPPUNIT_CHECK( gp->nVal == (i-1) * 2 );
103 CPPUNIT_MSG( PrintStat()(s, "Iterator test, descending insert order") );
107 for ( set_iterator it = s.begin(), itEnd = s.end(); it != itEnd; ++it ) {
108 CPPUNIT_ASSERT( (*it).nKey * 2 == it->nVal );
109 CPPUNIT_ASSERT( s.find( it->nKey ));
110 it->nVal = (*it).nKey;
112 if ( it != s.begin() ) {
113 CPPUNIT_ASSERT( nPrevKey + 1 == it->nKey );
117 CPPUNIT_ASSERT( nCount == nLimit );
120 for ( const_set_iterator it = s.cbegin(), itEnd = s.cend(); it != itEnd; ++it ) {
121 CPPUNIT_ASSERT( (*it).nKey == it->nVal );
123 if ( it != s.cbegin() ) {
124 CPPUNIT_ASSERT( nPrevKey + 1 == it->nKey );
128 CPPUNIT_ASSERT( nCount == nLimit );
130 // Test iterator - random order
132 CPPUNIT_ASSERT( s.empty() );
134 for ( int i = 0; i < nLimit; ++i )
135 CPPUNIT_ASSERT( s.insert( arrRandom[i]) );
136 CPPUNIT_MSG( PrintStat()(s, "Iterator test, random insert order") );
141 for ( set_iterator it = s.begin(), itEnd = s.end(); it != itEnd; ++it ) {
142 CPPUNIT_ASSERT( (*it).nKey == it->nVal );
143 CPPUNIT_ASSERT( s.find( it->nKey ));
144 it->nVal = (*it).nKey * 2;
146 if ( it != s.begin() ) {
147 CPPUNIT_ASSERT( nPrevKey + 1 == it->nKey );
151 CPPUNIT_ASSERT( nCount == nLimit );
154 for ( const_set_iterator it = s.cbegin(), itEnd = s.cend(); it != itEnd; ++it ) {
155 CPPUNIT_ASSERT( (*it).nKey * 2 == it->nVal );
157 if ( it != s.cbegin() ) {
158 CPPUNIT_ASSERT( nPrevKey + 1 == it->nKey );
162 CPPUNIT_ASSERT( nCount == nLimit );
166 typedef typename base_class::less<typename Set::value_type> less_predicate;
167 typename Set::guarded_ptr gp;
170 for ( int i = 0; i < nLimit; ++i ) {
171 int nKey = arrRandom[i];
173 CPPUNIT_ASSERT( gp );
174 CPPUNIT_ASSERT( !gp.empty());
175 CPPUNIT_CHECK( gp->nKey == nKey );
176 CPPUNIT_CHECK( gp->nVal == nKey * 2);
178 gp = s.extract( nKey );
179 CPPUNIT_ASSERT( gp );
180 CPPUNIT_ASSERT( !gp.empty());
181 CPPUNIT_CHECK( gp->nKey == nKey );
182 CPPUNIT_CHECK( gp->nVal == nKey * 2);
185 CPPUNIT_CHECK( !gp );
186 CPPUNIT_ASSERT( gp.empty());
187 CPPUNIT_ASSERT( !s.extract(nKey));
189 CPPUNIT_ASSERT( 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];
197 gp = s.get_with( wrapped_item( nKey ), wrapped_less());
198 CPPUNIT_ASSERT( gp );
199 CPPUNIT_ASSERT( !gp.empty());
200 CPPUNIT_CHECK( gp->nKey == nKey );
201 CPPUNIT_CHECK( gp->nVal == nKey );
203 gp = s.extract_with( wrapped_item( nKey ), wrapped_less());
204 CPPUNIT_ASSERT( gp );
205 CPPUNIT_ASSERT( !gp.empty());
206 CPPUNIT_CHECK( gp->nKey == nKey );
207 CPPUNIT_CHECK( gp->nVal == nKey );
208 gp = s.get_with( wrapped_item( nKey ), wrapped_less());
209 CPPUNIT_CHECK( !gp );
210 CPPUNIT_ASSERT( !s.extract_with( wrapped_item(nKey), wrapped_less() ));
212 CPPUNIT_ASSERT( s.empty() );
215 for ( int i = 0; i < nLimit; ++i )
216 CPPUNIT_ASSERT( s.insert( arrRandom[i]) );
218 for ( int i = 0; i < nLimit; ++i ) {
219 gp = s.extract_min();
220 CPPUNIT_ASSERT( gp );
221 CPPUNIT_ASSERT( !gp.empty());
222 CPPUNIT_CHECK( gp->nKey == i );
223 CPPUNIT_CHECK( gp->nVal == i );
225 CPPUNIT_CHECK( !gp );
227 CPPUNIT_ASSERT( s.empty() );
228 CPPUNIT_CHECK( !s.extract_min());
229 CPPUNIT_CHECK( !s.extract_max());
232 for ( int i = 0; i < nLimit; ++i )
233 CPPUNIT_ASSERT( s.insert( arrRandom[i]) );
235 for ( int i = nLimit-1; i >= 0; --i ) {
236 gp = s.extract_max();
237 CPPUNIT_ASSERT( gp );
238 CPPUNIT_ASSERT( !gp.empty());
239 CPPUNIT_CHECK( gp->nKey == i );
240 CPPUNIT_CHECK( gp->nVal == i );
242 CPPUNIT_CHECK( !gp );
244 CPPUNIT_ASSERT( s.empty() );
245 CPPUNIT_CHECK( !s.extract_min());
246 CPPUNIT_CHECK( !s.extract_max());
249 CPPUNIT_MSG( PrintStat()(s, nullptr) );
252 template <class Set, typename PrintStat >
255 typedef typename Set::value_type value_type;
256 typedef typename Set::iterator iterator;
257 typedef typename Set::const_iterator const_iterator;
262 CPPUNIT_ASSERT( s.empty() );
263 CPPUNIT_ASSERT( check_size( s, 0 ));
267 CPPUNIT_ASSERT( it != s.end() );
268 CPPUNIT_ASSERT( it->key() == 10 );
269 CPPUNIT_ASSERT( it->val() == 10 );
270 CPPUNIT_ASSERT( !s.empty() );
271 CPPUNIT_ASSERT( check_size( s, 1 ));
272 CPPUNIT_ASSERT( s.insert( 10 ) == s.end() );
274 it = s.insert( std::make_pair( 50, 25 ));
275 CPPUNIT_ASSERT( it != s.end() );
276 CPPUNIT_ASSERT( it->key() == 50 );
277 CPPUNIT_ASSERT( it->val() == 25 );
278 CPPUNIT_ASSERT( !s.empty() );
279 CPPUNIT_ASSERT( check_size( s, 2 ));
280 CPPUNIT_ASSERT( s.insert( 50 ) == s.end() );
283 std::pair< iterator, bool> ensureResult;
284 ensureResult = s.ensure( 20 );
285 CPPUNIT_ASSERT( ensureResult.first != s.end() );
286 CPPUNIT_ASSERT( ensureResult.second );
287 CPPUNIT_ASSERT( ensureResult.first->key() == 20 );
288 CPPUNIT_ASSERT( ensureResult.first->val() == 20 );
289 CPPUNIT_ASSERT( !s.empty() );
290 CPPUNIT_ASSERT( check_size( s, 3 ));
292 ensureResult = s.ensure( std::make_pair( 20, 200 ));
293 CPPUNIT_ASSERT( ensureResult.first != s.end() );
294 CPPUNIT_ASSERT( !ensureResult.second );
295 CPPUNIT_ASSERT( ensureResult.first->key() == 20 );
296 CPPUNIT_ASSERT( ensureResult.first->val() == 20 );
297 CPPUNIT_ASSERT( !s.empty() );
298 CPPUNIT_ASSERT( check_size( s, 3 ));
299 ensureResult.first->nVal = 22;
301 ensureResult = s.ensure( std::make_pair( 30, 33 ));
302 CPPUNIT_ASSERT( ensureResult.first != s.end() );
303 CPPUNIT_ASSERT( ensureResult.second );
304 CPPUNIT_ASSERT( ensureResult.first->key() == 30 );
305 CPPUNIT_ASSERT( ensureResult.first->val() == 33 );
306 CPPUNIT_ASSERT( !s.empty() );
307 CPPUNIT_ASSERT( check_size( s, 4 ));
311 CPPUNIT_ASSERT( it != s.end() );
312 CPPUNIT_ASSERT( it->key() == 10 );
313 CPPUNIT_ASSERT( it->val() == 10 );
316 CPPUNIT_ASSERT( it != s.end() );
317 CPPUNIT_ASSERT( it->key() == 20 );
318 CPPUNIT_ASSERT( it->val() == 22 );
320 it = s.find_with( 30, base_class::less<value_type>() );
321 CPPUNIT_ASSERT( it != s.end() );
322 CPPUNIT_ASSERT( it->key() == 30 );
323 CPPUNIT_ASSERT( it->val() == 33 );
326 CPPUNIT_ASSERT( it == s.end() );
329 CPPUNIT_ASSERT( it != s.end() );
330 CPPUNIT_ASSERT( it->key() == 50 );
331 CPPUNIT_ASSERT( it->val() == 25 );
334 it = s.emplace( 151 ) ; // key = 151, val = 151
335 CPPUNIT_ASSERT( it != s.end() );
336 CPPUNIT_ASSERT( it->key() == 151 );
337 CPPUNIT_ASSERT( it->val() == 151 );
339 it = s.emplace( 174, 471 ) ; // key == 174, val = 471
340 CPPUNIT_ASSERT( it != s.end() );
341 CPPUNIT_ASSERT( it->key() == 174 );
342 CPPUNIT_ASSERT( it->val() == 471 );
344 it = s.emplace( std::make_pair( 190, 91 )) ; // key == 190, val = 91
345 CPPUNIT_ASSERT( it != s.end() );
346 CPPUNIT_ASSERT( it->key() == 190 );
347 CPPUNIT_ASSERT( it->val() == 91 );
350 CPPUNIT_ASSERT( it != s.end() );
351 CPPUNIT_ASSERT( it->key() == 174 );
352 CPPUNIT_ASSERT( it->val() == 471 );
355 CPPUNIT_ASSERT( it != s.end() );
356 CPPUNIT_ASSERT( it->key() == 190 );
357 CPPUNIT_ASSERT( it->val() == 91 );
360 CPPUNIT_ASSERT( it != s.end() );
361 CPPUNIT_ASSERT( it->key() == 151 );
362 CPPUNIT_ASSERT( it->val() == 151 );
364 CPPUNIT_ASSERT( !s.empty() );
366 CPPUNIT_ASSERT( s.empty() );
367 CPPUNIT_ASSERT( check_size( s, 0 ));
370 for ( int i = 500; i > 0; --i ) {
371 CPPUNIT_ASSERT( s.insert( std::make_pair( i, i * 2) ) != s.end() );
373 typename Set::value_type * pVal = s.get_min();
374 CPPUNIT_ASSERT( pVal != nullptr );
375 CPPUNIT_CHECK( pVal->nKey == i );
376 CPPUNIT_CHECK( pVal->nVal == i * 2 );
378 CPPUNIT_ASSERT( !s.empty() );
380 CPPUNIT_ASSERT( s.empty() );
381 CPPUNIT_ASSERT( check_size( s, 0 ));
383 CPPUNIT_CHECK( s.get_min() == nullptr );
384 CPPUNIT_CHECK( s.get_max() == nullptr );
387 for ( int i = 0; i < 500; ++i ) {
388 CPPUNIT_ASSERT( s.insert( std::make_pair( i, i * 2) ) != s.end() );
390 typename Set::value_type * pVal = s.get_max();
391 CPPUNIT_ASSERT( pVal != nullptr );
392 CPPUNIT_CHECK( pVal->nKey == i );
393 CPPUNIT_CHECK( pVal->nVal == i * 2 );
395 CPPUNIT_ASSERT( !s.empty() );
396 CPPUNIT_ASSERT( check_size( s, 500 ));
398 for ( iterator it = s.begin(), itEnd = s.end(); it != itEnd; ++it ) {
399 CPPUNIT_ASSERT( (*it).nKey * 2 == it->nVal );
400 it->nVal = (*it).nKey;
403 Set const& refSet = s;
404 for ( const_iterator it = refSet.begin(), itEnd = refSet.end(); it != itEnd; ++it ) {
405 CPPUNIT_ASSERT( (*it).nKey == it->nVal );
410 void SkipList_HP_less();
411 void SkipList_HP_cmp();
412 void SkipList_HP_cmpless();
413 void SkipList_HP_less_stat();
414 void SkipList_HP_cmp_stat();
415 void SkipList_HP_cmpless_stat();
416 void SkipList_HP_xorshift_less();
417 void SkipList_HP_xorshift_cmp();
418 void SkipList_HP_xorshift_cmpless();
419 void SkipList_HP_xorshift_less_stat();
420 void SkipList_HP_xorshift_cmp_stat();
421 void SkipList_HP_xorshift_cmpless_stat();
422 void SkipList_HP_turbopas_less();
423 void SkipList_HP_turbopas_cmp();
424 void SkipList_HP_turbopas_cmpless();
425 void SkipList_HP_turbopas_less_stat();
426 void SkipList_HP_turbopas_cmp_stat();
427 void SkipList_HP_turbopas_cmpless_stat();
428 void SkipList_HP_michaelalloc_less();
429 void SkipList_HP_michaelalloc_cmp();
430 void SkipList_HP_michaelalloc_cmpless();
431 void SkipList_HP_michaelalloc_less_stat();
432 void SkipList_HP_michaelalloc_cmp_stat();
433 void SkipList_HP_michaelalloc_cmpless_stat();
435 void SkipList_DHP_less();
436 void SkipList_DHP_cmp();
437 void SkipList_DHP_cmpless();
438 void SkipList_DHP_less_stat();
439 void SkipList_DHP_cmp_stat();
440 void SkipList_DHP_cmpless_stat();
441 void SkipList_DHP_xorshift_less();
442 void SkipList_DHP_xorshift_cmp();
443 void SkipList_DHP_xorshift_cmpless();
444 void SkipList_DHP_xorshift_less_stat();
445 void SkipList_DHP_xorshift_cmp_stat();
446 void SkipList_DHP_xorshift_cmpless_stat();
447 void SkipList_DHP_turbopas_less();
448 void SkipList_DHP_turbopas_cmp();
449 void SkipList_DHP_turbopas_cmpless();
450 void SkipList_DHP_turbopas_less_stat();
451 void SkipList_DHP_turbopas_cmp_stat();
452 void SkipList_DHP_turbopas_cmpless_stat();
453 void SkipList_DHP_michaelalloc_less();
454 void SkipList_DHP_michaelalloc_cmp();
455 void SkipList_DHP_michaelalloc_cmpless();
456 void SkipList_DHP_michaelalloc_less_stat();
457 void SkipList_DHP_michaelalloc_cmp_stat();
458 void SkipList_DHP_michaelalloc_cmpless_stat();
460 void SkipList_NOGC_less();
461 void SkipList_NOGC_cmp();
462 void SkipList_NOGC_cmpless();
463 void SkipList_NOGC_less_stat();
464 void SkipList_NOGC_cmp_stat();
465 void SkipList_NOGC_cmpless_stat();
466 void SkipList_NOGC_xorshift_less();
467 void SkipList_NOGC_xorshift_cmp();
468 void SkipList_NOGC_xorshift_cmpless();
469 void SkipList_NOGC_xorshift_less_stat();
470 void SkipList_NOGC_xorshift_cmp_stat();
471 void SkipList_NOGC_xorshift_cmpless_stat();
472 void SkipList_NOGC_turbopas_less();
473 void SkipList_NOGC_turbopas_cmp();
474 void SkipList_NOGC_turbopas_cmpless();
475 void SkipList_NOGC_turbopas_less_stat();
476 void SkipList_NOGC_turbopas_cmp_stat();
477 void SkipList_NOGC_turbopas_cmpless_stat();
478 void SkipList_NOGC_michaelalloc_less();
479 void SkipList_NOGC_michaelalloc_cmp();
480 void SkipList_NOGC_michaelalloc_cmpless();
481 void SkipList_NOGC_michaelalloc_less_stat();
482 void SkipList_NOGC_michaelalloc_cmp_stat();
483 void SkipList_NOGC_michaelalloc_cmpless_stat();
485 CPPUNIT_TEST_SUITE(SkipListSetHdrTest)
486 CPPUNIT_TEST(SkipList_HP_less)
487 CPPUNIT_TEST(SkipList_HP_cmp)
488 CPPUNIT_TEST(SkipList_HP_cmpless)
489 CPPUNIT_TEST(SkipList_HP_less_stat)
490 CPPUNIT_TEST(SkipList_HP_cmp_stat)
491 CPPUNIT_TEST(SkipList_HP_cmpless_stat)
492 CPPUNIT_TEST(SkipList_HP_xorshift_less)
493 CPPUNIT_TEST(SkipList_HP_xorshift_cmp)
494 CPPUNIT_TEST(SkipList_HP_xorshift_cmpless)
495 CPPUNIT_TEST(SkipList_HP_xorshift_less_stat)
496 CPPUNIT_TEST(SkipList_HP_xorshift_cmp_stat)
497 CPPUNIT_TEST(SkipList_HP_xorshift_cmpless_stat)
498 CPPUNIT_TEST(SkipList_HP_turbopas_less)
499 CPPUNIT_TEST(SkipList_HP_turbopas_cmp)
500 CPPUNIT_TEST(SkipList_HP_turbopas_cmpless)
501 CPPUNIT_TEST(SkipList_HP_turbopas_less_stat)
502 CPPUNIT_TEST(SkipList_HP_turbopas_cmp_stat)
503 CPPUNIT_TEST(SkipList_HP_turbopas_cmpless_stat)
504 CPPUNIT_TEST(SkipList_HP_michaelalloc_less)
505 CPPUNIT_TEST(SkipList_HP_michaelalloc_cmp)
506 CPPUNIT_TEST(SkipList_HP_michaelalloc_cmpless)
507 CPPUNIT_TEST(SkipList_HP_michaelalloc_less_stat)
508 CPPUNIT_TEST(SkipList_HP_michaelalloc_cmp_stat)
509 CPPUNIT_TEST(SkipList_HP_michaelalloc_cmpless_stat)
511 CPPUNIT_TEST(SkipList_DHP_less)
512 CPPUNIT_TEST(SkipList_DHP_cmp)
513 CPPUNIT_TEST(SkipList_DHP_cmpless)
514 CPPUNIT_TEST(SkipList_DHP_less_stat)
515 CPPUNIT_TEST(SkipList_DHP_cmp_stat)
516 CPPUNIT_TEST(SkipList_DHP_cmpless_stat)
517 CPPUNIT_TEST(SkipList_DHP_xorshift_less)
518 CPPUNIT_TEST(SkipList_DHP_xorshift_cmp)
519 CPPUNIT_TEST(SkipList_DHP_xorshift_cmpless)
520 CPPUNIT_TEST(SkipList_DHP_xorshift_less_stat)
521 CPPUNIT_TEST(SkipList_DHP_xorshift_cmp_stat)
522 CPPUNIT_TEST(SkipList_DHP_xorshift_cmpless_stat)
523 CPPUNIT_TEST(SkipList_DHP_turbopas_less)
524 CPPUNIT_TEST(SkipList_DHP_turbopas_cmp)
525 CPPUNIT_TEST(SkipList_DHP_turbopas_cmpless)
526 CPPUNIT_TEST(SkipList_DHP_turbopas_less_stat)
527 CPPUNIT_TEST(SkipList_DHP_turbopas_cmp_stat)
528 CPPUNIT_TEST(SkipList_DHP_turbopas_cmpless_stat)
529 CPPUNIT_TEST(SkipList_DHP_michaelalloc_less)
530 CPPUNIT_TEST(SkipList_DHP_michaelalloc_cmp)
531 CPPUNIT_TEST(SkipList_DHP_michaelalloc_cmpless)
532 CPPUNIT_TEST(SkipList_DHP_michaelalloc_less_stat)
533 CPPUNIT_TEST(SkipList_DHP_michaelalloc_cmp_stat)
534 CPPUNIT_TEST(SkipList_DHP_michaelalloc_cmpless_stat)
536 CPPUNIT_TEST(SkipList_NOGC_less)
537 CPPUNIT_TEST(SkipList_NOGC_cmp)
538 CPPUNIT_TEST(SkipList_NOGC_cmpless)
539 CPPUNIT_TEST(SkipList_NOGC_less_stat)
540 CPPUNIT_TEST(SkipList_NOGC_cmp_stat)
541 CPPUNIT_TEST(SkipList_NOGC_cmpless_stat)
542 CPPUNIT_TEST(SkipList_NOGC_xorshift_less)
543 CPPUNIT_TEST(SkipList_NOGC_xorshift_cmp)
544 CPPUNIT_TEST(SkipList_NOGC_xorshift_cmpless)
545 CPPUNIT_TEST(SkipList_NOGC_xorshift_less_stat)
546 CPPUNIT_TEST(SkipList_NOGC_xorshift_cmp_stat)
547 CPPUNIT_TEST(SkipList_NOGC_xorshift_cmpless_stat)
548 CPPUNIT_TEST(SkipList_NOGC_turbopas_less)
549 CPPUNIT_TEST(SkipList_NOGC_turbopas_cmp)
550 CPPUNIT_TEST(SkipList_NOGC_turbopas_cmpless)
551 CPPUNIT_TEST(SkipList_NOGC_turbopas_less_stat)
552 CPPUNIT_TEST(SkipList_NOGC_turbopas_cmp_stat)
553 CPPUNIT_TEST(SkipList_NOGC_turbopas_cmpless_stat)
554 CPPUNIT_TEST(SkipList_NOGC_michaelalloc_less)
555 CPPUNIT_TEST(SkipList_NOGC_michaelalloc_cmp)
556 CPPUNIT_TEST(SkipList_NOGC_michaelalloc_cmpless)
557 CPPUNIT_TEST(SkipList_NOGC_michaelalloc_less_stat)
558 CPPUNIT_TEST(SkipList_NOGC_michaelalloc_cmp_stat)
559 CPPUNIT_TEST(SkipList_NOGC_michaelalloc_cmpless_stat)
561 CPPUNIT_TEST_SUITE_END()