3 #ifndef CDSTEST_HDR_INTRUSIVE_STRIPED_SET_H
4 #define CDSTEST_HDR_INTRUSIVE_STRIPED_SET_H
6 #include "cppunit/cppunit_proxy.h"
7 #include <cds/opt/hash.h>
9 // cds::intrusive namespace forward declaration
10 namespace cds { namespace intrusive {}}
13 namespace ci = cds::intrusive;
14 namespace co = cds::opt;
19 int operator()( T const & v ) const
26 struct get_int_key<int>
28 int operator()( int i ) const
35 class IntrusiveStripedSetHdrTest: public CppUnitMini::TestCase
40 unsigned int nDisposeCount ; // count of disposer calling
41 unsigned int nFindCount ; // count of find-functor calling
42 unsigned int nFindArgCount;
43 unsigned int nInsertCount;
44 unsigned int nUpdateNewCount;
45 unsigned int nUpdateCount;
46 unsigned int nEraseCount;
50 memset( this, 0, sizeof(*this));
53 stat& operator=( stat const& s)
55 memcpy( this, &s, sizeof(*this));
68 explicit item( int key )
73 item(int key, int val)
94 template <typename Hook>
104 explicit base_item( int key )
108 base_item(int key, int val)
112 base_item(const base_item& v )
113 : item( static_cast<item const&>(v) )
123 template <typename Hook>
133 explicit member_item( int key )
137 member_item(int key, int val)
141 member_item(const member_item& v )
142 : item( static_cast<item const&>(v))
161 size_t operator()( int i ) const
163 return co::v::hash<int>()( i );
165 template <typename Item>
166 size_t operator()( const Item& i ) const
168 return (*this)( i.key() );
170 size_t operator()( find_key const& i) const
172 return co::v::hash<int>()( i.nKey );
176 template <typename T>
179 bool operator ()(const T& v1, const T& v2 ) const
181 return v1.key() < v2.key();
184 template <typename Q>
185 bool operator ()(const T& v1, const Q& v2 ) const
187 return v1.key() < v2;
190 template <typename Q>
191 bool operator ()(const Q& v1, const T& v2 ) const
193 return v1 < v2.key();
196 bool operator()( int i1, int i2 ) const
202 template <typename T>
204 int operator ()(const T& v1, const T& v2 ) const
206 if ( v1.key() < v2.key() )
208 return v1.key() > v2.key() ? 1 : 0;
211 template <typename Q>
212 int operator ()(const T& v1, const Q& v2 ) const
216 return v1.key() > v2 ? 1 : 0;
219 template <typename Q>
220 int operator ()(const Q& v1, const T& v2 ) const
224 return v1 > v2.key() ? 1 : 0;
228 struct faked_disposer
230 template <typename T>
231 void operator ()( T * p )
237 struct insert_functor {
238 template <typename Item>
239 void operator()( Item& e)
245 struct update_functor {
246 template <typename Item>
247 void operator()( bool bNew, Item& e, Item& arg )
251 CPPUNIT_ASSERT_CURRENT( &e == &arg );
258 struct erase_functor {
259 template< typename Item >
260 void operator()( Item& e )
266 struct find_functor {
267 template <typename Item, typename What>
268 void operator()( Item& e, What& )
273 template <typename Item>
274 void operator()( Item& e, Item& w )
282 template <typename Item>
283 bool operator()( Item const& e, find_key const& k ) const
285 return get_int_key<Item>()(e) < k.nKey;
287 template <typename Item>
288 bool operator()( find_key const& k, Item const& e ) const
290 return k.nKey < get_int_key<Item>()(e);
292 template <typename Item1, typename Item2>
293 bool operator()( Item1 const& e, Item2 const& k ) const
295 return get_int_key<Item1>()(e) < get_int_key<Item2>()(k);
299 template <typename T>
300 struct auto_dispose {
302 auto_dispose( T * pArr ): m_pArr( pArr ) {}
303 ~auto_dispose() { delete[] m_pArr; }
307 void test_with(Set& s)
309 typedef typename Set::value_type value_type;
319 value_type e1( k1, v1 );
320 value_type e2( k2, v2 );
321 value_type e3( k3, v3);
327 CPPUNIT_ASSERT( s.empty() );
328 CPPUNIT_ASSERT( s.size() == 0 );
330 CPPUNIT_ASSERT( !s.contains(k1));
331 CPPUNIT_ASSERT( !s.contains(k2));
332 CPPUNIT_ASSERT( !s.contains(k3));
334 CPPUNIT_ASSERT( s.insert(e1));
335 CPPUNIT_ASSERT( s.contains(e1));
336 CPPUNIT_ASSERT( s.contains(k1));
337 CPPUNIT_ASSERT( !s.contains(e2));
338 CPPUNIT_ASSERT( !s.contains(e3));
340 CPPUNIT_ASSERT( e2.nInsertCount == 0 );
341 CPPUNIT_ASSERT( s.insert(e2, insert_functor() ));
342 CPPUNIT_ASSERT( e2.nInsertCount == 1 );
343 CPPUNIT_ASSERT( s.find(e1, find_functor() ));
344 CPPUNIT_ASSERT( e1.nFindCount == 1 );
345 CPPUNIT_ASSERT( e1.nFindArgCount == 1 );
346 CPPUNIT_ASSERT( s.find(k1, find_functor() ));
347 CPPUNIT_ASSERT( e1.nFindCount == 2 );
348 CPPUNIT_ASSERT( e1.nFindArgCount == 1 );
349 CPPUNIT_ASSERT( s.find(k2, find_functor() ));
350 CPPUNIT_ASSERT( e2.nFindCount == 1 );
351 CPPUNIT_ASSERT( e2.nFindArgCount == 0 );
352 CPPUNIT_ASSERT( s.find(e2, find_functor() ));
353 CPPUNIT_ASSERT( e2.nFindCount == 2 );
354 CPPUNIT_ASSERT( e2.nFindArgCount == 1 );
355 CPPUNIT_ASSERT( !s.find(k3, find_functor()));
356 CPPUNIT_ASSERT( e3.nFindCount == 0 );
357 CPPUNIT_ASSERT( e3.nFindArgCount == 0 );
358 CPPUNIT_ASSERT( !s.find(e3, find_functor()));
359 CPPUNIT_ASSERT( e3.nFindCount == 0 );
360 CPPUNIT_ASSERT( e3.nFindArgCount == 0 );
362 s1 = e1 ; s2 = e2 ; s3 = e3;
364 CPPUNIT_ASSERT( e3.nUpdateNewCount == 0 );
365 CPPUNIT_ASSERT( e3.nUpdateCount == 0 );
366 CPPUNIT_ASSERT(s.update(e3, update_functor(), false) == std::make_pair(false, false));
367 CPPUNIT_ASSERT(e3.nUpdateNewCount == 0);
368 CPPUNIT_ASSERT(e3.nUpdateCount == 0);
369 CPPUNIT_ASSERT( s.update( e3, update_functor() ) == std::make_pair(true, true));
370 CPPUNIT_ASSERT( e3.nUpdateNewCount == 1 );
371 CPPUNIT_ASSERT( e3.nUpdateCount == 0 );
372 CPPUNIT_ASSERT( s.find_with(find_key(k1), less2(), find_functor() ));
373 CPPUNIT_ASSERT( e1.nFindCount == s1.nFindCount + 1 );
374 CPPUNIT_ASSERT( e1.nFindArgCount == s1.nFindArgCount );
375 CPPUNIT_ASSERT( s.find_with(k1, less2(), find_functor() ));
376 CPPUNIT_ASSERT( e1.nFindCount == s1.nFindCount + 2 );
377 CPPUNIT_ASSERT( e1.nFindArgCount == s1.nFindArgCount );
378 CPPUNIT_ASSERT( s.find_with(k2, less2(), find_functor() ));
379 CPPUNIT_ASSERT( e2.nFindCount == s2.nFindCount + 1 );
380 CPPUNIT_ASSERT( e2.nFindArgCount == s2.nFindArgCount );
381 CPPUNIT_ASSERT( s.contains(find_key(k2), less2() ));
382 CPPUNIT_ASSERT( e2.nFindCount == s2.nFindCount + 1 ) ; // unchanged, no find_functor
383 CPPUNIT_ASSERT( e2.nFindArgCount == s2.nFindArgCount );
384 CPPUNIT_ASSERT( s.contains(k3, less2() ));
385 CPPUNIT_ASSERT( e3.nFindCount == s3.nFindCount ) ; // unchanged, no find_functor
386 CPPUNIT_ASSERT( e3.nFindArgCount == s3.nFindArgCount );
387 CPPUNIT_ASSERT( s.find_with(find_key(k3), less2(), find_functor() ));
388 CPPUNIT_ASSERT( e3.nFindCount == s3.nFindCount + 1 );
389 CPPUNIT_ASSERT( e3.nFindArgCount == s3.nFindArgCount );
391 s1 = e1 ; s2 = e2 ; s3 = e3;
393 // insert existing elements
395 value_type eu( k2, 1000 );
396 CPPUNIT_ASSERT( !s.insert( eu ));
397 CPPUNIT_ASSERT( !s.insert( eu, insert_functor() ));
398 CPPUNIT_ASSERT( e2.nInsertCount == s2.nInsertCount );
400 CPPUNIT_ASSERT( s.update( eu, update_functor()) == std::make_pair(true, false));
401 CPPUNIT_ASSERT( e2.nInsertCount == s2.nInsertCount );
402 CPPUNIT_ASSERT( e2.nUpdateCount == s2.nUpdateCount + 1 );
403 CPPUNIT_ASSERT( e2.nUpdateNewCount == s2.nUpdateNewCount );
406 s1 = e1 ; s2 = e2 ; s3 = e3;
408 // unlink & erase test
410 value_type eu( k2, 10 );
411 CPPUNIT_ASSERT( !s.unlink(eu));
414 CPPUNIT_ASSERT( !s.empty() );
415 CPPUNIT_ASSERT( s.size() == 3 );
417 CPPUNIT_ASSERT( s.unlink( e1 ) );
418 CPPUNIT_ASSERT( s.erase_with( k2, less2() ) == &e2 );
419 CPPUNIT_ASSERT( s.erase( e2 ) == nullptr );
420 CPPUNIT_ASSERT( e3.nEraseCount == 0 );
421 CPPUNIT_ASSERT( s.erase_with( k3, less2(), erase_functor()) == &e3 );
422 CPPUNIT_ASSERT( e3.nEraseCount == 1 );
423 CPPUNIT_ASSERT( s.erase( k3, erase_functor() ) == nullptr );
424 CPPUNIT_ASSERT( e3.nEraseCount == 1 );
426 CPPUNIT_ASSERT( s.insert( e3 ) );
427 CPPUNIT_ASSERT( s.erase( e3 ) == &e3 );
428 CPPUNIT_ASSERT( e3.nEraseCount == 1 );
430 CPPUNIT_ASSERT( s.empty() );
431 CPPUNIT_ASSERT( s.size() == 0 );
433 s1 = e1 ; s2 = e2 ; s3 = e3;
435 // clear & clear_and_dispose test
436 CPPUNIT_ASSERT( s.insert(e1));
437 CPPUNIT_ASSERT( s.insert(e2));
438 CPPUNIT_ASSERT( s.insert(e3));
439 CPPUNIT_ASSERT( !s.empty() );
440 CPPUNIT_ASSERT( s.size() == 3 );
442 CPPUNIT_ASSERT( s.empty() );
443 CPPUNIT_ASSERT( s.size() == 0 );
445 CPPUNIT_ASSERT( s.insert(e1));
446 CPPUNIT_ASSERT( s.insert(e2));
447 CPPUNIT_ASSERT( s.insert(e3));
448 CPPUNIT_ASSERT( !s.empty() );
449 CPPUNIT_ASSERT( s.size() == 3 );
451 CPPUNIT_ASSERT( e1.nDisposeCount == 0 );
452 CPPUNIT_ASSERT( e2.nDisposeCount == 0 );
453 CPPUNIT_ASSERT( e3.nDisposeCount == 0 );
454 s.clear_and_dispose( faked_disposer() );
455 CPPUNIT_ASSERT( e1.nDisposeCount == 1 );
456 CPPUNIT_ASSERT( e2.nDisposeCount == 1 );
457 CPPUNIT_ASSERT( e3.nDisposeCount == 1 );
458 CPPUNIT_ASSERT( s.empty() );
459 CPPUNIT_ASSERT( s.size() == 0 );
461 // resize test (up to 64K elements)
462 size_t const nSize = 64 * 1024;
463 value_type * arr = new value_type[nSize];
464 auto_dispose<value_type> ad(arr);
465 for ( size_t i = 0; i < nSize; ++i ) {
466 value_type * p = new (arr + i) value_type( (int) i, (int) i * 2 );
467 CPPUNIT_ASSERT_EX( s.insert( *p, insert_functor() ), "i=" << i );
468 CPPUNIT_ASSERT_EX( p->nInsertCount == 1, "i=" << i );
469 //for ( size_t j = 0; j <= i; ++j ) {
470 // if ( !s.contains((int) j) ) {
471 // CPPUNIT_MSG( "Key " << j << " is not found after inserting key " << i );
476 for ( size_t i = 0; i < nSize; ++i )
477 CPPUNIT_ASSERT_EX( s.contains((int) i), "Key " << i << " is not found" );
479 CPPUNIT_ASSERT( !s.empty() );
480 CPPUNIT_ASSERT( s.size() == nSize );
481 s.clear_and_dispose( faked_disposer() );
482 for ( size_t i = 0; i < nSize; ++i ) {
483 CPPUNIT_ASSERT_EX( arr[i].nDisposeCount == 1, "i=" << i );
496 // ctor with explicit initial capacity
506 unsigned int nProbesetSize = Set::node_type::probeset_size ? Set::node_type::probeset_size : 4;
507 Set s( 256, nProbesetSize, nProbesetSize / 2 );
511 // ***********************************************************
514 void Striped_list_basehook_cmp();
515 void Striped_list_basehook_less();
516 void Striped_list_basehook_cmpmix();
517 void Striped_list_basehook_bucket_threshold();
518 void Striped_list_basehook_bucket_threshold_rt();
519 void Striped_list_memberhook_cmp();
520 void Striped_list_memberhook_less();
521 void Striped_list_memberhook_cmpmix();
522 void Striped_list_memberhook_bucket_threshold();
523 void Striped_list_memberhook_bucket_threshold_rt();
525 void Striped_slist_basehook_cmp();
526 void Striped_slist_basehook_less();
527 void Striped_slist_basehook_cmpmix();
528 void Striped_slist_basehook_bucket_threshold();
529 void Striped_slist_basehook_bucket_threshold_rt();
530 void Striped_slist_memberhook_cmp();
531 void Striped_slist_memberhook_less();
532 void Striped_slist_memberhook_cmpmix();
533 void Striped_slist_memberhook_bucket_threshold();
534 void Striped_slist_memberhook_bucket_threshold_rt();
536 void Striped_set_basehook();
537 void Striped_set_basehook_bucket_threshold();
538 void Striped_set_basehook_bucket_threshold_rt();
539 void Striped_set_memberhook();
540 void Striped_set_memberhook_bucket_threshold();
541 void Striped_set_memberhook_bucket_threshold_rt();
543 void Striped_unordered_set_basehook();
544 void Striped_unordered_set_basehook_bucket_threshold();
545 void Striped_unordered_set_basehook_bucket_threshold_rt();
546 void Striped_unordered_set_memberhook();
547 void Striped_unordered_set_memberhook_bucket_threshold();
548 void Striped_unordered_set_memberhook_bucket_threshold_rt();
550 void Striped_avl_set_basehook();
551 void Striped_avl_set_basehook_bucket_threshold();
552 void Striped_avl_set_basehook_bucket_threshold_rt();
553 void Striped_avl_set_memberhook();
554 void Striped_avl_set_memberhook_bucket_threshold();
555 void Striped_avl_set_memberhook_bucket_threshold_rt();
557 void Striped_sg_set_basehook();
558 void Striped_sg_set_basehook_bucket_threshold();
559 void Striped_sg_set_basehook_bucket_threshold_rt();
560 void Striped_sg_set_memberhook();
561 void Striped_sg_set_memberhook_bucket_threshold();
562 void Striped_sg_set_memberhook_bucket_threshold_rt();
564 void Striped_splay_set_basehook();
565 void Striped_splay_set_basehook_bucket_threshold();
566 void Striped_splay_set_basehook_bucket_threshold_rt();
567 void Striped_splay_set_memberhook();
568 void Striped_splay_set_memberhook_bucket_threshold();
569 void Striped_splay_set_memberhook_bucket_threshold_rt();
571 void Striped_treap_set_basehook();
572 void Striped_treap_set_basehook_bucket_threshold();
573 void Striped_treap_set_basehook_bucket_threshold_rt();
574 void Striped_treap_set_memberhook();
575 void Striped_treap_set_memberhook_bucket_threshold();
576 void Striped_treap_set_memberhook_bucket_threshold_rt();
578 // ***********************************************************
581 void Refinable_list_basehook_cmp();
582 void Refinable_list_basehook_less();
583 void Refinable_list_basehook_cmpmix();
584 void Refinable_list_basehook_bucket_threshold();
585 void Refinable_list_basehook_bucket_threshold_rt();
586 void Refinable_list_memberhook_cmp();
587 void Refinable_list_memberhook_less();
588 void Refinable_list_memberhook_cmpmix();
589 void Refinable_list_memberhook_bucket_threshold();
590 void Refinable_list_memberhook_bucket_threshold_rt();
592 void Refinable_slist_basehook_cmp();
593 void Refinable_slist_basehook_less();
594 void Refinable_slist_basehook_cmpmix();
595 void Refinable_slist_basehook_bucket_threshold();
596 void Refinable_slist_basehook_bucket_threshold_rt();
597 void Refinable_slist_memberhook_cmp();
598 void Refinable_slist_memberhook_less();
599 void Refinable_slist_memberhook_cmpmix();
600 void Refinable_slist_memberhook_bucket_threshold();
601 void Refinable_slist_memberhook_bucket_threshold_rt();
603 void Refinable_set_basehook();
604 void Refinable_set_basehook_bucket_threshold();
605 void Refinable_set_basehook_bucket_threshold_rt();
606 void Refinable_set_memberhook();
607 void Refinable_set_memberhook_bucket_threshold();
608 void Refinable_set_memberhook_bucket_threshold_rt();
610 void Refinable_unordered_set_basehook();
611 void Refinable_unordered_set_basehook_bucket_threshold();
612 void Refinable_unordered_set_basehook_bucket_threshold_rt();
613 void Refinable_unordered_set_memberhook();
614 void Refinable_unordered_set_memberhook_bucket_threshold();
615 void Refinable_unordered_set_memberhook_bucket_threshold_rt();
617 void Refinable_avl_set_basehook();
618 void Refinable_avl_set_basehook_bucket_threshold();
619 void Refinable_avl_set_basehook_bucket_threshold_rt();
620 void Refinable_avl_set_memberhook();
621 void Refinable_avl_set_memberhook_bucket_threshold();
622 void Refinable_avl_set_memberhook_bucket_threshold_rt();
624 void Refinable_sg_set_basehook();
625 void Refinable_sg_set_basehook_bucket_threshold();
626 void Refinable_sg_set_basehook_bucket_threshold_rt();
627 void Refinable_sg_set_memberhook();
628 void Refinable_sg_set_memberhook_bucket_threshold();
629 void Refinable_sg_set_memberhook_bucket_threshold_rt();
631 void Refinable_splay_set_basehook();
632 void Refinable_splay_set_basehook_bucket_threshold();
633 void Refinable_splay_set_basehook_bucket_threshold_rt();
634 void Refinable_splay_set_memberhook();
635 void Refinable_splay_set_memberhook_bucket_threshold();
636 void Refinable_splay_set_memberhook_bucket_threshold_rt();
638 void Refinable_treap_set_basehook();
639 void Refinable_treap_set_basehook_bucket_threshold();
640 void Refinable_treap_set_basehook_bucket_threshold_rt();
641 void Refinable_treap_set_memberhook();
642 void Refinable_treap_set_memberhook_bucket_threshold();
643 void Refinable_treap_set_memberhook_bucket_threshold_rt();
645 CPPUNIT_TEST_SUITE(IntrusiveStripedSetHdrTest)
646 // ***********************************************************
649 CPPUNIT_TEST( Striped_list_basehook_cmp)
650 CPPUNIT_TEST( Striped_list_basehook_less)
651 CPPUNIT_TEST( Striped_list_basehook_cmpmix)
652 CPPUNIT_TEST( Striped_list_basehook_bucket_threshold)
653 CPPUNIT_TEST( Striped_list_basehook_bucket_threshold_rt)
654 CPPUNIT_TEST( Striped_list_memberhook_cmp)
655 CPPUNIT_TEST( Striped_list_memberhook_less)
656 CPPUNIT_TEST( Striped_list_memberhook_cmpmix)
657 CPPUNIT_TEST( Striped_list_memberhook_bucket_threshold)
658 CPPUNIT_TEST( Striped_list_memberhook_bucket_threshold_rt)
660 CPPUNIT_TEST( Striped_slist_basehook_cmp)
661 CPPUNIT_TEST( Striped_slist_basehook_less)
662 CPPUNIT_TEST( Striped_slist_basehook_cmpmix)
663 CPPUNIT_TEST( Striped_slist_basehook_bucket_threshold)
664 CPPUNIT_TEST( Striped_slist_basehook_bucket_threshold_rt)
665 CPPUNIT_TEST( Striped_slist_memberhook_cmp)
666 CPPUNIT_TEST( Striped_slist_memberhook_less)
667 CPPUNIT_TEST( Striped_slist_memberhook_cmpmix)
668 CPPUNIT_TEST( Striped_slist_memberhook_bucket_threshold)
669 CPPUNIT_TEST( Striped_slist_memberhook_bucket_threshold_rt)
671 CPPUNIT_TEST( Striped_set_basehook )
672 CPPUNIT_TEST( Striped_set_basehook_bucket_threshold )
673 CPPUNIT_TEST( Striped_set_basehook_bucket_threshold_rt )
674 CPPUNIT_TEST( Striped_set_memberhook)
675 CPPUNIT_TEST( Striped_set_memberhook_bucket_threshold )
676 CPPUNIT_TEST( Striped_set_memberhook_bucket_threshold_rt )
678 CPPUNIT_TEST( Striped_unordered_set_basehook )
679 CPPUNIT_TEST( Striped_unordered_set_basehook_bucket_threshold )
680 CPPUNIT_TEST( Striped_unordered_set_basehook_bucket_threshold_rt )
681 CPPUNIT_TEST( Striped_unordered_set_memberhook)
682 CPPUNIT_TEST( Striped_unordered_set_memberhook_bucket_threshold )
683 CPPUNIT_TEST( Striped_unordered_set_memberhook_bucket_threshold_rt )
685 CPPUNIT_TEST( Striped_avl_set_basehook )
686 CPPUNIT_TEST( Striped_avl_set_basehook_bucket_threshold )
687 CPPUNIT_TEST( Striped_avl_set_basehook_bucket_threshold_rt )
688 CPPUNIT_TEST( Striped_avl_set_memberhook)
689 CPPUNIT_TEST( Striped_avl_set_memberhook_bucket_threshold )
690 CPPUNIT_TEST( Striped_avl_set_memberhook_bucket_threshold_rt )
692 CPPUNIT_TEST( Striped_sg_set_basehook )
693 CPPUNIT_TEST( Striped_sg_set_basehook_bucket_threshold )
694 CPPUNIT_TEST( Striped_sg_set_basehook_bucket_threshold_rt )
695 CPPUNIT_TEST( Striped_sg_set_memberhook)
696 CPPUNIT_TEST( Striped_sg_set_memberhook_bucket_threshold )
697 CPPUNIT_TEST( Striped_sg_set_memberhook_bucket_threshold_rt )
699 CPPUNIT_TEST( Striped_splay_set_basehook )
700 CPPUNIT_TEST( Striped_splay_set_basehook_bucket_threshold )
701 CPPUNIT_TEST( Striped_splay_set_basehook_bucket_threshold_rt )
702 CPPUNIT_TEST( Striped_splay_set_memberhook)
703 CPPUNIT_TEST( Striped_splay_set_memberhook_bucket_threshold )
704 CPPUNIT_TEST( Striped_splay_set_memberhook_bucket_threshold_rt )
706 CPPUNIT_TEST( Striped_treap_set_basehook )
707 CPPUNIT_TEST( Striped_treap_set_basehook_bucket_threshold )
708 CPPUNIT_TEST( Striped_treap_set_basehook_bucket_threshold_rt )
709 CPPUNIT_TEST( Striped_treap_set_memberhook)
710 CPPUNIT_TEST( Striped_treap_set_memberhook_bucket_threshold )
711 CPPUNIT_TEST( Striped_treap_set_memberhook_bucket_threshold_rt )
713 // ***********************************************************
716 CPPUNIT_TEST( Refinable_list_basehook_cmp)
717 CPPUNIT_TEST( Refinable_list_basehook_less)
718 CPPUNIT_TEST( Refinable_list_basehook_cmpmix)
719 CPPUNIT_TEST( Refinable_list_basehook_bucket_threshold)
720 CPPUNIT_TEST( Refinable_list_basehook_bucket_threshold_rt)
721 CPPUNIT_TEST( Refinable_list_memberhook_cmp)
722 CPPUNIT_TEST( Refinable_list_memberhook_less)
723 CPPUNIT_TEST( Refinable_list_memberhook_cmpmix)
724 CPPUNIT_TEST( Refinable_list_memberhook_bucket_threshold)
725 CPPUNIT_TEST( Refinable_list_memberhook_bucket_threshold_rt)
727 CPPUNIT_TEST( Refinable_slist_basehook_cmp)
728 CPPUNIT_TEST( Refinable_slist_basehook_less)
729 CPPUNIT_TEST( Refinable_slist_basehook_cmpmix)
730 CPPUNIT_TEST( Refinable_slist_basehook_bucket_threshold)
731 CPPUNIT_TEST( Refinable_slist_basehook_bucket_threshold_rt)
732 CPPUNIT_TEST( Refinable_slist_memberhook_cmp)
733 CPPUNIT_TEST( Refinable_slist_memberhook_less)
734 CPPUNIT_TEST( Refinable_slist_memberhook_cmpmix)
735 CPPUNIT_TEST( Refinable_slist_memberhook_bucket_threshold)
736 CPPUNIT_TEST( Refinable_slist_memberhook_bucket_threshold_rt)
738 CPPUNIT_TEST( Refinable_set_basehook )
739 CPPUNIT_TEST( Refinable_set_basehook_bucket_threshold )
740 CPPUNIT_TEST( Refinable_set_basehook_bucket_threshold_rt )
741 CPPUNIT_TEST( Refinable_set_memberhook)
742 CPPUNIT_TEST( Refinable_set_memberhook_bucket_threshold )
743 CPPUNIT_TEST( Refinable_set_memberhook_bucket_threshold_rt )
745 CPPUNIT_TEST( Refinable_unordered_set_basehook )
746 CPPUNIT_TEST( Refinable_unordered_set_basehook_bucket_threshold )
747 CPPUNIT_TEST( Refinable_unordered_set_basehook_bucket_threshold_rt )
748 CPPUNIT_TEST( Refinable_unordered_set_memberhook)
749 CPPUNIT_TEST( Refinable_unordered_set_memberhook_bucket_threshold )
750 CPPUNIT_TEST( Refinable_unordered_set_memberhook_bucket_threshold_rt )
752 CPPUNIT_TEST( Refinable_avl_set_basehook )
753 CPPUNIT_TEST( Refinable_avl_set_basehook_bucket_threshold )
754 CPPUNIT_TEST( Refinable_avl_set_basehook_bucket_threshold_rt )
755 CPPUNIT_TEST( Refinable_avl_set_memberhook)
756 CPPUNIT_TEST( Refinable_avl_set_memberhook_bucket_threshold )
757 CPPUNIT_TEST( Refinable_avl_set_memberhook_bucket_threshold_rt )
759 CPPUNIT_TEST( Refinable_sg_set_basehook )
760 CPPUNIT_TEST( Refinable_sg_set_basehook_bucket_threshold )
761 CPPUNIT_TEST( Refinable_sg_set_basehook_bucket_threshold_rt )
762 CPPUNIT_TEST( Refinable_sg_set_memberhook)
763 CPPUNIT_TEST( Refinable_sg_set_memberhook_bucket_threshold )
764 CPPUNIT_TEST( Refinable_sg_set_memberhook_bucket_threshold_rt )
766 CPPUNIT_TEST( Refinable_splay_set_basehook )
767 CPPUNIT_TEST( Refinable_splay_set_basehook_bucket_threshold )
768 CPPUNIT_TEST( Refinable_splay_set_basehook_bucket_threshold_rt )
769 CPPUNIT_TEST( Refinable_splay_set_memberhook)
770 CPPUNIT_TEST( Refinable_splay_set_memberhook_bucket_threshold )
771 CPPUNIT_TEST( Refinable_splay_set_memberhook_bucket_threshold_rt )
773 CPPUNIT_TEST( Refinable_treap_set_basehook )
774 CPPUNIT_TEST( Refinable_treap_set_basehook_bucket_threshold )
775 CPPUNIT_TEST( Refinable_treap_set_basehook_bucket_threshold_rt )
776 CPPUNIT_TEST( Refinable_treap_set_memberhook)
777 CPPUNIT_TEST( Refinable_treap_set_memberhook_bucket_threshold )
778 CPPUNIT_TEST( Refinable_treap_set_memberhook_bucket_threshold_rt )
779 CPPUNIT_TEST_SUITE_END()
783 #endif // #ifndef CDSTEST_HDR_INTRUSIVE_STRIPED_SET_H