3 #include "cppunit/cppunit_proxy.h"
4 #include <cds/opt/hash.h>
6 // cds::intrusive namespace forward declaration
7 namespace cds { namespace intrusive {}}
10 namespace ci = cds::intrusive;
11 namespace co = cds::opt;
14 class IntrusiveStripedSetHdrTest: public CppUnitMini::TestCase
19 unsigned int nDisposeCount ; // count of disposer calling
20 unsigned int nFindCount ; // count of find-functor calling
21 unsigned int nFindArgCount;
22 unsigned int nInsertCount;
23 unsigned int nEnsureNewCount;
24 unsigned int nEnsureCount;
25 unsigned int nEraseCount;
29 memset( this, 0, sizeof(*this));
32 stat& operator=( stat const& s)
34 memcpy( this, &s, sizeof(*this));
47 item(int key, int val)
68 template <typename Hook>
78 base_item(int key, int val)
82 base_item(const base_item& v )
83 : item( static_cast<item const&>(v) )
88 template <typename Hook>
98 member_item(int key, int val)
102 member_item(const member_item& v )
103 : item( static_cast<item const&>(v))
117 size_t operator()( int i ) const
119 return co::v::hash<int>()( i );
121 template <typename Item>
122 size_t operator()( const Item& i ) const
124 return (*this)( i.key() );
126 size_t operator()( find_key const& i) const
128 return co::v::hash<int>()( i.nKey );
132 template <typename T>
135 bool operator ()(const T& v1, const T& v2 ) const
137 return v1.key() < v2.key();
140 template <typename Q>
141 bool operator ()(const T& v1, const Q& v2 ) const
143 return v1.key() < v2;
146 template <typename Q>
147 bool operator ()(const Q& v1, const T& v2 ) const
149 return v1 < v2.key();
153 template <typename T>
155 int operator ()(const T& v1, const T& v2 ) const
157 if ( v1.key() < v2.key() )
159 return v1.key() > v2.key() ? 1 : 0;
162 template <typename Q>
163 int operator ()(const T& v1, const Q& v2 ) const
167 return v1.key() > v2 ? 1 : 0;
170 template <typename Q>
171 int operator ()(const Q& v1, const T& v2 ) const
175 return v1 > v2.key() ? 1 : 0;
179 struct faked_disposer
181 template <typename T>
182 void operator ()( T * p )
188 struct insert_functor {
189 template <typename Item>
190 void operator()( Item& e)
196 struct ensure_functor {
197 template <typename Item>
198 void operator()( bool bNew, Item& e, Item& arg )
202 CPPUNIT_ASSERT_CURRENT( &e == &arg );
209 struct erase_functor {
210 template< typename Item >
211 void operator()( Item& e )
217 struct find_functor {
218 template <typename Item, typename What>
219 void operator()( Item& e, What& )
224 template <typename Item>
225 void operator()( Item& e, Item& w )
233 template <typename Item>
234 bool operator()( Item const& e, find_key const& k ) const
236 return e.key() < k.nKey;
238 template <typename Item>
239 bool operator()( find_key const& k, Item const& e ) const
241 return k.nKey < e.key();
243 template <typename Item>
244 bool operator()( Item const& e, int k ) const
248 template <typename Item>
249 bool operator()( int k, Item const& e ) const
255 template <typename T>
256 struct auto_dispose {
258 auto_dispose( T * pArr ): m_pArr( pArr ) {}
259 ~auto_dispose() { delete[] m_pArr; }
263 void test_with(Set& s)
265 typedef typename Set::value_type value_type;
275 value_type e1( k1, v1 );
276 value_type e2( k2, v2 );
277 value_type e3( k3, v3);
283 CPPUNIT_ASSERT( s.empty() );
284 CPPUNIT_ASSERT( s.size() == 0 );
286 CPPUNIT_ASSERT( !s.find(k1));
287 CPPUNIT_ASSERT( !s.find(k2));
288 CPPUNIT_ASSERT( !s.find(k3));
290 CPPUNIT_ASSERT( s.insert(e1));
291 CPPUNIT_ASSERT( s.find(e1));
292 CPPUNIT_ASSERT( s.find(k1));
293 CPPUNIT_ASSERT( !s.find(e2));
294 CPPUNIT_ASSERT( !s.find(e3));
296 CPPUNIT_ASSERT( e2.nInsertCount == 0 );
297 CPPUNIT_ASSERT( s.insert(e2, insert_functor() ));
298 CPPUNIT_ASSERT( e2.nInsertCount == 1 );
299 CPPUNIT_ASSERT( s.find(e1, find_functor() ));
300 CPPUNIT_ASSERT( e1.nFindCount == 1 );
301 CPPUNIT_ASSERT( e1.nFindArgCount == 1 );
302 CPPUNIT_ASSERT( s.find(k1, find_functor() ));
303 CPPUNIT_ASSERT( e1.nFindCount == 2 );
304 CPPUNIT_ASSERT( e1.nFindArgCount == 1 );
305 CPPUNIT_ASSERT( s.find(k2, find_functor() ));
306 CPPUNIT_ASSERT( e2.nFindCount == 1 );
307 CPPUNIT_ASSERT( e2.nFindArgCount == 0 );
308 CPPUNIT_ASSERT( s.find(e2, find_functor() ));
309 CPPUNIT_ASSERT( e2.nFindCount == 2 );
310 CPPUNIT_ASSERT( e2.nFindArgCount == 1 );
311 CPPUNIT_ASSERT( !s.find(k3, find_functor()));
312 CPPUNIT_ASSERT( e3.nFindCount == 0 );
313 CPPUNIT_ASSERT( e3.nFindArgCount == 0 );
314 CPPUNIT_ASSERT( !s.find(e3, find_functor()));
315 CPPUNIT_ASSERT( e3.nFindCount == 0 );
316 CPPUNIT_ASSERT( e3.nFindArgCount == 0 );
318 s1 = e1 ; s2 = e2 ; s3 = e3;
320 CPPUNIT_ASSERT( e3.nEnsureNewCount == 0 );
321 CPPUNIT_ASSERT( e3.nEnsureCount == 0 );
322 CPPUNIT_ASSERT( s.ensure( e3, ensure_functor() ) == std::make_pair(true, true));
323 CPPUNIT_ASSERT( e3.nEnsureNewCount == 1 );
324 CPPUNIT_ASSERT( e3.nEnsureCount == 0 );
325 CPPUNIT_ASSERT( s.find_with(find_key(k1), less2(), find_functor() ));
326 CPPUNIT_ASSERT( e1.nFindCount == s1.nFindCount + 1 );
327 CPPUNIT_ASSERT( e1.nFindArgCount == s1.nFindArgCount );
328 CPPUNIT_ASSERT( s.find_with(k1, less2(), find_functor() ));
329 CPPUNIT_ASSERT( e1.nFindCount == s1.nFindCount + 2 );
330 CPPUNIT_ASSERT( e1.nFindArgCount == s1.nFindArgCount );
331 CPPUNIT_ASSERT( s.find_with(k2, less2(), find_functor() ));
332 CPPUNIT_ASSERT( e2.nFindCount == s2.nFindCount + 1 );
333 CPPUNIT_ASSERT( e2.nFindArgCount == s2.nFindArgCount );
334 CPPUNIT_ASSERT( s.find_with(find_key(k2), less2() ));
335 CPPUNIT_ASSERT( e2.nFindCount == s2.nFindCount + 1 ) ; // unchanged, no find_functor
336 CPPUNIT_ASSERT( e2.nFindArgCount == s2.nFindArgCount );
337 CPPUNIT_ASSERT( s.find_with(k3, less2() ));
338 CPPUNIT_ASSERT( e3.nFindCount == s3.nFindCount ) ; // unchanged, no find_functor
339 CPPUNIT_ASSERT( e3.nFindArgCount == s3.nFindArgCount );
340 CPPUNIT_ASSERT( s.find_with(find_key(k3), less2(), find_functor() ));
341 CPPUNIT_ASSERT( e3.nFindCount == s3.nFindCount + 1 );
342 CPPUNIT_ASSERT( e3.nFindArgCount == s3.nFindArgCount );
344 s1 = e1 ; s2 = e2 ; s3 = e3;
346 // insert existing elements
348 value_type eu( k2, 1000 );
349 CPPUNIT_ASSERT( !s.insert( eu ));
350 CPPUNIT_ASSERT( !s.insert( eu, insert_functor() ));
351 CPPUNIT_ASSERT( e2.nInsertCount == s2.nInsertCount );
353 CPPUNIT_ASSERT( s.ensure( eu, ensure_functor()) == std::make_pair(true, false));
354 CPPUNIT_ASSERT( e2.nInsertCount == s2.nInsertCount );
355 CPPUNIT_ASSERT( e2.nEnsureCount == s2.nEnsureCount + 1 );
356 CPPUNIT_ASSERT( e2.nEnsureNewCount == s2.nEnsureNewCount );
359 s1 = e1 ; s2 = e2 ; s3 = e3;
361 // unlink & erase test
363 value_type eu( k2, 10 );
364 CPPUNIT_ASSERT( !s.unlink(eu));
367 CPPUNIT_ASSERT( !s.empty() );
368 CPPUNIT_ASSERT( s.size() == 3 );
370 CPPUNIT_ASSERT( s.unlink( e1 ) );
371 CPPUNIT_ASSERT( s.erase_with( k2, less2() ) == &e2 );
372 CPPUNIT_ASSERT( s.erase( e2 ) == nullptr );
373 CPPUNIT_ASSERT( e3.nEraseCount == 0 );
374 CPPUNIT_ASSERT( s.erase_with( k3, less2(), erase_functor()) == &e3 );
375 CPPUNIT_ASSERT( e3.nEraseCount == 1 );
376 CPPUNIT_ASSERT( s.erase( k3, erase_functor() ) == nullptr );
377 CPPUNIT_ASSERT( e3.nEraseCount == 1 );
379 CPPUNIT_ASSERT( s.insert( e3 ) );
380 CPPUNIT_ASSERT( s.erase( e3 ) == &e3 );
381 CPPUNIT_ASSERT( e3.nEraseCount == 1 );
383 CPPUNIT_ASSERT( s.empty() );
384 CPPUNIT_ASSERT( s.size() == 0 );
386 s1 = e1 ; s2 = e2 ; s3 = e3;
388 // clear & clear_and_dispose test
389 CPPUNIT_ASSERT( s.insert(e1));
390 CPPUNIT_ASSERT( s.insert(e2));
391 CPPUNIT_ASSERT( s.insert(e3));
392 CPPUNIT_ASSERT( !s.empty() );
393 CPPUNIT_ASSERT( s.size() == 3 );
395 CPPUNIT_ASSERT( s.empty() );
396 CPPUNIT_ASSERT( s.size() == 0 );
398 CPPUNIT_ASSERT( s.insert(e1));
399 CPPUNIT_ASSERT( s.insert(e2));
400 CPPUNIT_ASSERT( s.insert(e3));
401 CPPUNIT_ASSERT( !s.empty() );
402 CPPUNIT_ASSERT( s.size() == 3 );
404 CPPUNIT_ASSERT( e1.nDisposeCount == 0 );
405 CPPUNIT_ASSERT( e2.nDisposeCount == 0 );
406 CPPUNIT_ASSERT( e3.nDisposeCount == 0 );
407 s.clear_and_dispose( faked_disposer() );
408 CPPUNIT_ASSERT( e1.nDisposeCount == 1 );
409 CPPUNIT_ASSERT( e2.nDisposeCount == 1 );
410 CPPUNIT_ASSERT( e3.nDisposeCount == 1 );
411 CPPUNIT_ASSERT( s.empty() );
412 CPPUNIT_ASSERT( s.size() == 0 );
414 // resize test (up to 64K elements)
415 size_t const nSize = 64 * 1024;
416 value_type * arr = new value_type[nSize];
417 auto_dispose<value_type> ad(arr);
418 for ( size_t i = 0; i < nSize; ++i ) {
419 value_type * p = new (arr + i) value_type( (int) i, (int) i * 2 );
420 CPPUNIT_ASSERT_EX( s.insert( *p, insert_functor() ), "i=" << i );
421 CPPUNIT_ASSERT_EX( p->nInsertCount == 1, "i=" << i );
422 //for ( size_t j = 0; j <= i; ++j ) {
423 // if ( !s.find((int) j) ) {
424 // CPPUNIT_MSG( "Key " << j << " is not found after inserting key " << i );
429 for ( size_t i = 0; i < nSize; ++i )
430 CPPUNIT_ASSERT_EX( s.find((int) i), "Key " << i << " is not found" );
432 CPPUNIT_ASSERT( !s.empty() );
433 CPPUNIT_ASSERT( s.size() == nSize );
434 s.clear_and_dispose( faked_disposer() );
435 for ( size_t i = 0; i < nSize; ++i ) {
436 CPPUNIT_ASSERT_EX( arr[i].nDisposeCount == 1, "i=" << i );
449 // ctor with explicit initial capacity
459 unsigned int nProbesetSize = Set::node_type::probeset_size ? Set::node_type::probeset_size : 4;
460 Set s( 256, nProbesetSize, nProbesetSize / 2 );
464 // ***********************************************************
467 void Striped_list_basehook_cmp();
468 void Striped_list_basehook_less();
469 void Striped_list_basehook_cmpmix();
470 void Striped_list_basehook_bucket_threshold();
471 void Striped_list_basehook_bucket_threshold_rt();
472 void Striped_list_memberhook_cmp();
473 void Striped_list_memberhook_less();
474 void Striped_list_memberhook_cmpmix();
475 void Striped_list_memberhook_bucket_threshold();
476 void Striped_list_memberhook_bucket_threshold_rt();
478 void Striped_slist_basehook_cmp();
479 void Striped_slist_basehook_less();
480 void Striped_slist_basehook_cmpmix();
481 void Striped_slist_basehook_bucket_threshold();
482 void Striped_slist_basehook_bucket_threshold_rt();
483 void Striped_slist_memberhook_cmp();
484 void Striped_slist_memberhook_less();
485 void Striped_slist_memberhook_cmpmix();
486 void Striped_slist_memberhook_bucket_threshold();
487 void Striped_slist_memberhook_bucket_threshold_rt();
489 void Striped_set_basehook();
490 void Striped_set_basehook_bucket_threshold();
491 void Striped_set_basehook_bucket_threshold_rt();
492 void Striped_set_memberhook();
493 void Striped_set_memberhook_bucket_threshold();
494 void Striped_set_memberhook_bucket_threshold_rt();
496 void Striped_unordered_set_basehook();
497 void Striped_unordered_set_basehook_bucket_threshold();
498 void Striped_unordered_set_basehook_bucket_threshold_rt();
499 void Striped_unordered_set_memberhook();
500 void Striped_unordered_set_memberhook_bucket_threshold();
501 void Striped_unordered_set_memberhook_bucket_threshold_rt();
503 void Striped_avl_set_basehook();
504 void Striped_avl_set_basehook_bucket_threshold();
505 void Striped_avl_set_basehook_bucket_threshold_rt();
506 void Striped_avl_set_memberhook();
507 void Striped_avl_set_memberhook_bucket_threshold();
508 void Striped_avl_set_memberhook_bucket_threshold_rt();
510 void Striped_sg_set_basehook();
511 void Striped_sg_set_basehook_bucket_threshold();
512 void Striped_sg_set_basehook_bucket_threshold_rt();
513 void Striped_sg_set_memberhook();
514 void Striped_sg_set_memberhook_bucket_threshold();
515 void Striped_sg_set_memberhook_bucket_threshold_rt();
517 void Striped_splay_set_basehook();
518 void Striped_splay_set_basehook_bucket_threshold();
519 void Striped_splay_set_basehook_bucket_threshold_rt();
520 void Striped_splay_set_memberhook();
521 void Striped_splay_set_memberhook_bucket_threshold();
522 void Striped_splay_set_memberhook_bucket_threshold_rt();
524 void Striped_treap_set_basehook();
525 void Striped_treap_set_basehook_bucket_threshold();
526 void Striped_treap_set_basehook_bucket_threshold_rt();
527 void Striped_treap_set_memberhook();
528 void Striped_treap_set_memberhook_bucket_threshold();
529 void Striped_treap_set_memberhook_bucket_threshold_rt();
531 // ***********************************************************
534 void Refinable_list_basehook_cmp();
535 void Refinable_list_basehook_less();
536 void Refinable_list_basehook_cmpmix();
537 void Refinable_list_basehook_bucket_threshold();
538 void Refinable_list_basehook_bucket_threshold_rt();
539 void Refinable_list_memberhook_cmp();
540 void Refinable_list_memberhook_less();
541 void Refinable_list_memberhook_cmpmix();
542 void Refinable_list_memberhook_bucket_threshold();
543 void Refinable_list_memberhook_bucket_threshold_rt();
545 void Refinable_slist_basehook_cmp();
546 void Refinable_slist_basehook_less();
547 void Refinable_slist_basehook_cmpmix();
548 void Refinable_slist_basehook_bucket_threshold();
549 void Refinable_slist_basehook_bucket_threshold_rt();
550 void Refinable_slist_memberhook_cmp();
551 void Refinable_slist_memberhook_less();
552 void Refinable_slist_memberhook_cmpmix();
553 void Refinable_slist_memberhook_bucket_threshold();
554 void Refinable_slist_memberhook_bucket_threshold_rt();
556 void Refinable_set_basehook();
557 void Refinable_set_basehook_bucket_threshold();
558 void Refinable_set_basehook_bucket_threshold_rt();
559 void Refinable_set_memberhook();
560 void Refinable_set_memberhook_bucket_threshold();
561 void Refinable_set_memberhook_bucket_threshold_rt();
563 void Refinable_unordered_set_basehook();
564 void Refinable_unordered_set_basehook_bucket_threshold();
565 void Refinable_unordered_set_basehook_bucket_threshold_rt();
566 void Refinable_unordered_set_memberhook();
567 void Refinable_unordered_set_memberhook_bucket_threshold();
568 void Refinable_unordered_set_memberhook_bucket_threshold_rt();
570 void Refinable_avl_set_basehook();
571 void Refinable_avl_set_basehook_bucket_threshold();
572 void Refinable_avl_set_basehook_bucket_threshold_rt();
573 void Refinable_avl_set_memberhook();
574 void Refinable_avl_set_memberhook_bucket_threshold();
575 void Refinable_avl_set_memberhook_bucket_threshold_rt();
577 void Refinable_sg_set_basehook();
578 void Refinable_sg_set_basehook_bucket_threshold();
579 void Refinable_sg_set_basehook_bucket_threshold_rt();
580 void Refinable_sg_set_memberhook();
581 void Refinable_sg_set_memberhook_bucket_threshold();
582 void Refinable_sg_set_memberhook_bucket_threshold_rt();
584 void Refinable_splay_set_basehook();
585 void Refinable_splay_set_basehook_bucket_threshold();
586 void Refinable_splay_set_basehook_bucket_threshold_rt();
587 void Refinable_splay_set_memberhook();
588 void Refinable_splay_set_memberhook_bucket_threshold();
589 void Refinable_splay_set_memberhook_bucket_threshold_rt();
591 void Refinable_treap_set_basehook();
592 void Refinable_treap_set_basehook_bucket_threshold();
593 void Refinable_treap_set_basehook_bucket_threshold_rt();
594 void Refinable_treap_set_memberhook();
595 void Refinable_treap_set_memberhook_bucket_threshold();
596 void Refinable_treap_set_memberhook_bucket_threshold_rt();
598 CPPUNIT_TEST_SUITE(IntrusiveStripedSetHdrTest)
599 // ***********************************************************
602 CPPUNIT_TEST( Striped_list_basehook_cmp)
603 CPPUNIT_TEST( Striped_list_basehook_less)
604 CPPUNIT_TEST( Striped_list_basehook_cmpmix)
605 CPPUNIT_TEST( Striped_list_basehook_bucket_threshold)
606 CPPUNIT_TEST( Striped_list_basehook_bucket_threshold_rt)
607 CPPUNIT_TEST( Striped_list_memberhook_cmp)
608 CPPUNIT_TEST( Striped_list_memberhook_less)
609 CPPUNIT_TEST( Striped_list_memberhook_cmpmix)
610 CPPUNIT_TEST( Striped_list_memberhook_bucket_threshold)
611 CPPUNIT_TEST( Striped_list_memberhook_bucket_threshold_rt)
613 CPPUNIT_TEST( Striped_slist_basehook_cmp)
614 CPPUNIT_TEST( Striped_slist_basehook_less)
615 CPPUNIT_TEST( Striped_slist_basehook_cmpmix)
616 CPPUNIT_TEST( Striped_slist_basehook_bucket_threshold)
617 CPPUNIT_TEST( Striped_slist_basehook_bucket_threshold_rt)
618 CPPUNIT_TEST( Striped_slist_memberhook_cmp)
619 CPPUNIT_TEST( Striped_slist_memberhook_less)
620 CPPUNIT_TEST( Striped_slist_memberhook_cmpmix)
621 CPPUNIT_TEST( Striped_slist_memberhook_bucket_threshold)
622 CPPUNIT_TEST( Striped_slist_memberhook_bucket_threshold_rt)
624 CPPUNIT_TEST( Striped_set_basehook )
625 CPPUNIT_TEST( Striped_set_basehook_bucket_threshold )
626 CPPUNIT_TEST( Striped_set_basehook_bucket_threshold_rt )
627 CPPUNIT_TEST( Striped_set_memberhook)
628 CPPUNIT_TEST( Striped_set_memberhook_bucket_threshold )
629 CPPUNIT_TEST( Striped_set_memberhook_bucket_threshold_rt )
631 CPPUNIT_TEST( Striped_unordered_set_basehook )
632 CPPUNIT_TEST( Striped_unordered_set_basehook_bucket_threshold )
633 CPPUNIT_TEST( Striped_unordered_set_basehook_bucket_threshold_rt )
634 CPPUNIT_TEST( Striped_unordered_set_memberhook)
635 CPPUNIT_TEST( Striped_unordered_set_memberhook_bucket_threshold )
636 CPPUNIT_TEST( Striped_unordered_set_memberhook_bucket_threshold_rt )
638 CPPUNIT_TEST( Striped_avl_set_basehook )
639 CPPUNIT_TEST( Striped_avl_set_basehook_bucket_threshold )
640 CPPUNIT_TEST( Striped_avl_set_basehook_bucket_threshold_rt )
641 CPPUNIT_TEST( Striped_avl_set_memberhook)
642 CPPUNIT_TEST( Striped_avl_set_memberhook_bucket_threshold )
643 CPPUNIT_TEST( Striped_avl_set_memberhook_bucket_threshold_rt )
645 CPPUNIT_TEST( Striped_sg_set_basehook )
646 CPPUNIT_TEST( Striped_sg_set_basehook_bucket_threshold )
647 CPPUNIT_TEST( Striped_sg_set_basehook_bucket_threshold_rt )
648 CPPUNIT_TEST( Striped_sg_set_memberhook)
649 CPPUNIT_TEST( Striped_sg_set_memberhook_bucket_threshold )
650 CPPUNIT_TEST( Striped_sg_set_memberhook_bucket_threshold_rt )
652 CPPUNIT_TEST( Striped_splay_set_basehook )
653 CPPUNIT_TEST( Striped_splay_set_basehook_bucket_threshold )
654 CPPUNIT_TEST( Striped_splay_set_basehook_bucket_threshold_rt )
655 CPPUNIT_TEST( Striped_splay_set_memberhook)
656 CPPUNIT_TEST( Striped_splay_set_memberhook_bucket_threshold )
657 CPPUNIT_TEST( Striped_splay_set_memberhook_bucket_threshold_rt )
659 CPPUNIT_TEST( Striped_treap_set_basehook )
660 CPPUNIT_TEST( Striped_treap_set_basehook_bucket_threshold )
661 CPPUNIT_TEST( Striped_treap_set_basehook_bucket_threshold_rt )
662 CPPUNIT_TEST( Striped_treap_set_memberhook)
663 CPPUNIT_TEST( Striped_treap_set_memberhook_bucket_threshold )
664 CPPUNIT_TEST( Striped_treap_set_memberhook_bucket_threshold_rt )
666 // ***********************************************************
669 CPPUNIT_TEST( Refinable_list_basehook_cmp)
670 CPPUNIT_TEST( Refinable_list_basehook_less)
671 CPPUNIT_TEST( Refinable_list_basehook_cmpmix)
672 CPPUNIT_TEST( Refinable_list_basehook_bucket_threshold)
673 CPPUNIT_TEST( Refinable_list_basehook_bucket_threshold_rt)
674 CPPUNIT_TEST( Refinable_list_memberhook_cmp)
675 CPPUNIT_TEST( Refinable_list_memberhook_less)
676 CPPUNIT_TEST( Refinable_list_memberhook_cmpmix)
677 CPPUNIT_TEST( Refinable_list_memberhook_bucket_threshold)
678 CPPUNIT_TEST( Refinable_list_memberhook_bucket_threshold_rt)
680 CPPUNIT_TEST( Refinable_slist_basehook_cmp)
681 CPPUNIT_TEST( Refinable_slist_basehook_less)
682 CPPUNIT_TEST( Refinable_slist_basehook_cmpmix)
683 CPPUNIT_TEST( Refinable_slist_basehook_bucket_threshold)
684 CPPUNIT_TEST( Refinable_slist_basehook_bucket_threshold_rt)
685 CPPUNIT_TEST( Refinable_slist_memberhook_cmp)
686 CPPUNIT_TEST( Refinable_slist_memberhook_less)
687 CPPUNIT_TEST( Refinable_slist_memberhook_cmpmix)
688 CPPUNIT_TEST( Refinable_slist_memberhook_bucket_threshold)
689 CPPUNIT_TEST( Refinable_slist_memberhook_bucket_threshold_rt)
691 CPPUNIT_TEST( Refinable_set_basehook )
692 CPPUNIT_TEST( Refinable_set_basehook_bucket_threshold )
693 CPPUNIT_TEST( Refinable_set_basehook_bucket_threshold_rt )
694 CPPUNIT_TEST( Refinable_set_memberhook)
695 CPPUNIT_TEST( Refinable_set_memberhook_bucket_threshold )
696 CPPUNIT_TEST( Refinable_set_memberhook_bucket_threshold_rt )
698 CPPUNIT_TEST( Refinable_unordered_set_basehook )
699 CPPUNIT_TEST( Refinable_unordered_set_basehook_bucket_threshold )
700 CPPUNIT_TEST( Refinable_unordered_set_basehook_bucket_threshold_rt )
701 CPPUNIT_TEST( Refinable_unordered_set_memberhook)
702 CPPUNIT_TEST( Refinable_unordered_set_memberhook_bucket_threshold )
703 CPPUNIT_TEST( Refinable_unordered_set_memberhook_bucket_threshold_rt )
705 CPPUNIT_TEST( Refinable_avl_set_basehook )
706 CPPUNIT_TEST( Refinable_avl_set_basehook_bucket_threshold )
707 CPPUNIT_TEST( Refinable_avl_set_basehook_bucket_threshold_rt )
708 CPPUNIT_TEST( Refinable_avl_set_memberhook)
709 CPPUNIT_TEST( Refinable_avl_set_memberhook_bucket_threshold )
710 CPPUNIT_TEST( Refinable_avl_set_memberhook_bucket_threshold_rt )
712 CPPUNIT_TEST( Refinable_sg_set_basehook )
713 CPPUNIT_TEST( Refinable_sg_set_basehook_bucket_threshold )
714 CPPUNIT_TEST( Refinable_sg_set_basehook_bucket_threshold_rt )
715 CPPUNIT_TEST( Refinable_sg_set_memberhook)
716 CPPUNIT_TEST( Refinable_sg_set_memberhook_bucket_threshold )
717 CPPUNIT_TEST( Refinable_sg_set_memberhook_bucket_threshold_rt )
719 CPPUNIT_TEST( Refinable_splay_set_basehook )
720 CPPUNIT_TEST( Refinable_splay_set_basehook_bucket_threshold )
721 CPPUNIT_TEST( Refinable_splay_set_basehook_bucket_threshold_rt )
722 CPPUNIT_TEST( Refinable_splay_set_memberhook)
723 CPPUNIT_TEST( Refinable_splay_set_memberhook_bucket_threshold )
724 CPPUNIT_TEST( Refinable_splay_set_memberhook_bucket_threshold_rt )
726 CPPUNIT_TEST( Refinable_treap_set_basehook )
727 CPPUNIT_TEST( Refinable_treap_set_basehook_bucket_threshold )
728 CPPUNIT_TEST( Refinable_treap_set_basehook_bucket_threshold_rt )
729 CPPUNIT_TEST( Refinable_treap_set_memberhook)
730 CPPUNIT_TEST( Refinable_treap_set_memberhook_bucket_threshold )
731 CPPUNIT_TEST( Refinable_treap_set_memberhook_bucket_threshold_rt )
732 CPPUNIT_TEST_SUITE_END()