3 #ifndef CDSHDRTEST_ELLENBINTREE_SET_H
4 #define CDSHDRTEST_ELLENBINTREE_SET_H
6 #include "cppunit/cppunit_proxy.h"
7 #include "size_check.h"
8 #include <functional> // ref
12 using misc::check_size;
14 class EllenBinTreeSetHdrTest: public CppUnitMini::TestCase
20 size_t nInsertFuncCall;
21 size_t nEnsureExistFuncCall;
22 size_t nEnsureNewFuncCall;
23 size_t nEraseFuncCall;
25 size_t nFindConstFuncCall;
29 , nEnsureExistFuncCall(0)
30 , nEnsureNewFuncCall(0)
33 , nFindConstFuncCall(0)
51 value_type( int key, int v )
56 value_type( std::pair<int,int> const& p )
62 struct key_extractor {
63 void operator()( key_type& dest, value_type const& src ) const
70 bool operator()( int k1, int k2 ) const
74 bool operator()( value_type const& v1, value_type const& v2 ) const
76 return v1.nKey < v2.nKey;
78 bool operator()( value_type const& v, int k ) const
82 bool operator()( int k, value_type const& v ) const
86 bool operator()( std::pair<int,int> const& p, value_type& v ) const
88 return p.first < v.nKey;
90 bool operator()( value_type& v, std::pair<int,int> const& p ) const
92 return v.nKey < p.first;
94 bool operator()( std::pair<int,int> const& p, int v ) const
98 bool operator()( int v, std::pair<int,int> const& p ) const
105 int cmp( int k1, int k2 ) const
107 return k1 < k2 ? -1 : (k1 > k2 ? 1 : 0);
109 int operator()( int k1, int k2 ) const
111 return cmp( k1, k2 );
113 int operator()( value_type const& v1, value_type const& v2 ) const
115 return cmp( v1.nKey, v2.nKey );
117 int operator()( value_type const& v, int k ) const
119 return cmp( v.nKey, k );
121 int operator()( int k, value_type const& v ) const
123 return cmp( k, v.nKey );
125 int operator()( std::pair<int,int> const& p, value_type& v ) const
127 return cmp( p.first, v.nKey );
129 int operator()( value_type& v, std::pair<int,int> const& p ) const
131 return cmp( v.nKey, p.first );
133 int operator()( std::pair<int,int> const& p, int v ) const
135 return cmp( p.first, v );
137 int operator()( int v, std::pair<int,int> const& p ) const
139 return cmp( v, p.first );
153 bool operator()( wrapped_int const& w, int n ) const
157 bool operator()( int n, wrapped_int const& w ) const
161 template <typename T>
162 bool operator()( wrapped_int const& w, T const& v ) const
164 return w.nKey < v.nKey;
166 template <typename T>
167 bool operator()( T const& v, wrapped_int const& w ) const
169 return v.nKey < w.nKey;
174 static const size_t c_nItemCount = 10000;
183 : pFirst( new int[c_nItemCount] )
184 , pLast( pFirst + c_nItemCount )
187 for ( int * p = pFirst; p != pLast; ++p, ++i )
190 std::random_shuffle( pFirst, pLast );
198 int operator[]( size_t i ) const
200 assert( i < size_t(pLast - pFirst) );
207 template <typename T>
208 void operator()( value_type& i, T& val )
210 ++i.stat.nFindFuncCall;
212 template <typename T>
213 void operator()( value_type& i, T const& val )
215 ++i.stat.nFindConstFuncCall;
219 template <typename Item>
224 template <typename T>
225 void operator()( Item& i, T& /*val*/ )
230 void operator()( Item const& i )
236 struct insert_functor
238 template <typename Item>
239 void operator()(Item& i )
241 i.nVal = i.nKey * 100;
242 ++i.stat.nInsertFuncCall;
246 template <typename Q>
247 static void ensure_func( bool bNew, value_type& i, Q& /*val*/ )
250 ++i.stat.nEnsureNewFuncCall;
252 ++i.stat.nEnsureExistFuncCall;
255 struct ensure_functor
257 template <typename Q>
258 void operator()( bool bNew, value_type& i, Q& val )
260 ensure_func( bNew, i, val );
264 struct extract_functor
268 template <typename Q>
269 void operator()( Q&, value_type& v )
278 void test_with( Set& s)
284 CPPUNIT_ASSERT( !s.find( 10 ) );
285 CPPUNIT_ASSERT( s.insert( 10 ));
286 CPPUNIT_ASSERT( !s.empty() );
287 CPPUNIT_ASSERT( check_size( s, 1 ));
288 CPPUNIT_ASSERT( s.find( 10 ) );
290 CPPUNIT_ASSERT( !s.insert( 10 ));
291 CPPUNIT_ASSERT( !s.empty() );
292 CPPUNIT_ASSERT( check_size( s, 1 ));
294 CPPUNIT_ASSERT( !s.find_with( 20, less() ) );
295 CPPUNIT_ASSERT( s.insert( std::make_pair(20, 25) ));
296 CPPUNIT_ASSERT( !s.empty() );
297 CPPUNIT_ASSERT( check_size( s, 2 ));
298 CPPUNIT_ASSERT( s.find_with( 10, less() ) );
299 CPPUNIT_ASSERT( s.find( key = 20 ) );
300 CPPUNIT_ASSERT( s.find_with( key, less(), find_functor() ) );
302 copy_found<value_type> f;
305 CPPUNIT_ASSERT( s.find( key, std::ref( f ) ) );
306 CPPUNIT_ASSERT( f.m_found.nKey == 20 );
307 CPPUNIT_ASSERT( f.m_found.nVal == 25 );
308 CPPUNIT_ASSERT( f.m_found.stat.nFindFuncCall == 1 );
309 CPPUNIT_ASSERT( f.m_found.stat.nFindConstFuncCall == 0 );
311 CPPUNIT_ASSERT( s.find( key, find_functor() ) );
313 copy_found<value_type> f;
316 CPPUNIT_ASSERT( s.find_with( key, less(), std::ref( f ) ) );
317 CPPUNIT_ASSERT( f.m_found.nKey == 20 );
318 CPPUNIT_ASSERT( f.m_found.nVal == 25 );
319 CPPUNIT_ASSERT( f.m_found.stat.nFindFuncCall == 2 );
320 CPPUNIT_ASSERT( f.m_found.stat.nFindConstFuncCall == 0 );
322 CPPUNIT_ASSERT( s.find( 20, find_functor() ) );
324 copy_found<value_type> f;
326 CPPUNIT_ASSERT( s.find_with( 20, less(), std::ref( f ) ) );
327 CPPUNIT_ASSERT( f.m_found.nKey == 20 );
328 CPPUNIT_ASSERT( f.m_found.nVal == 25 );
329 CPPUNIT_ASSERT( f.m_found.stat.nFindFuncCall == 2 );
330 CPPUNIT_ASSERT( f.m_found.stat.nFindConstFuncCall == 1 );
333 CPPUNIT_ASSERT( !s.empty() );
334 CPPUNIT_ASSERT( check_size( s, 2 ));
336 CPPUNIT_ASSERT( !s.find( 25 ) );
337 CPPUNIT_ASSERT( s.insert( std::make_pair(25, -1), insert_functor() ));
338 CPPUNIT_ASSERT( !s.empty() );
339 CPPUNIT_ASSERT( check_size( s, 3 ));
341 copy_found<value_type> f;
344 CPPUNIT_ASSERT( s.find( key, std::ref( f ) ) );
345 CPPUNIT_ASSERT( f.m_found.nKey == 25 );
346 CPPUNIT_ASSERT( f.m_found.nVal == 2500 );
347 CPPUNIT_ASSERT( f.m_found.stat.nInsertFuncCall == 1 );
353 copy_found<value_type> f;
355 CPPUNIT_ASSERT( s.find( key, std::ref( f ) ) );
356 CPPUNIT_ASSERT( f.m_found.nKey == 10 );
357 CPPUNIT_ASSERT( f.m_found.nVal == 100 );
358 CPPUNIT_ASSERT( f.m_found.stat.nEnsureExistFuncCall == 0 );
359 CPPUNIT_ASSERT( f.m_found.stat.nEnsureNewFuncCall == 0 );
361 std::pair<bool, bool> ensureResult = s.ensure( key, ensure_functor() );
362 CPPUNIT_ASSERT( ensureResult.first && !ensureResult.second );
363 CPPUNIT_ASSERT( !s.empty() );
364 CPPUNIT_ASSERT( check_size( s, 3 ));
366 copy_found<value_type> f;
368 CPPUNIT_ASSERT( s.find( key, std::ref( f ) ) );
369 CPPUNIT_ASSERT( f.m_found.nKey == 10 );
370 CPPUNIT_ASSERT( f.m_found.nVal == 100 );
371 CPPUNIT_ASSERT( f.m_found.stat.nEnsureExistFuncCall == 1 );
372 CPPUNIT_ASSERT( f.m_found.stat.nEnsureNewFuncCall == 0 );
375 ensureResult = s.ensure( std::make_pair(13, 1300), ensure_functor() );
376 CPPUNIT_ASSERT( ensureResult.first && ensureResult.second );
377 CPPUNIT_ASSERT( !s.empty() );
378 CPPUNIT_ASSERT( check_size( s, 4 ));
380 copy_found<value_type> f;
383 CPPUNIT_ASSERT( s.find( key, std::ref( f ) ) );
384 CPPUNIT_ASSERT( f.m_found.nKey == 13 );
385 CPPUNIT_ASSERT( f.m_found.nVal == 1300 );
386 CPPUNIT_ASSERT( f.m_found.stat.nEnsureExistFuncCall == 0 );
387 CPPUNIT_ASSERT( f.m_found.stat.nEnsureNewFuncCall == 1 );
391 CPPUNIT_ASSERT( s.erase(13) );
392 CPPUNIT_ASSERT( !s.find( 13 ));
393 CPPUNIT_ASSERT( !s.empty() );
394 CPPUNIT_ASSERT( check_size( s, 3 ));
395 CPPUNIT_ASSERT( !s.erase(13) );
396 CPPUNIT_ASSERT( !s.empty() );
397 CPPUNIT_ASSERT( check_size( s, 3 ));
399 CPPUNIT_ASSERT( s.find( 10 ));
400 CPPUNIT_ASSERT( s.erase_with( 10, less() ));
401 CPPUNIT_ASSERT( !s.find( 10 ));
402 CPPUNIT_ASSERT( !s.empty() );
403 CPPUNIT_ASSERT( check_size( s, 2 ));
404 CPPUNIT_ASSERT( !s.erase_with(10, less()) );
405 CPPUNIT_ASSERT( !s.empty() );
406 CPPUNIT_ASSERT( check_size( s, 2 ));
408 CPPUNIT_ASSERT( s.find(20) );
410 copy_found<value_type> f;
412 CPPUNIT_ASSERT( s.erase( 20, std::ref( f ) ) );
413 CPPUNIT_ASSERT( f.m_found.nKey == 20 );
414 CPPUNIT_ASSERT( f.m_found.nVal == 25 );
416 CPPUNIT_ASSERT( s.insert(235))
417 CPPUNIT_ASSERT( s.erase_with( 235, less(), std::ref( f ) ) );
418 CPPUNIT_ASSERT( f.m_found.nKey == 235 );
419 CPPUNIT_ASSERT( f.m_found.nVal == 2350 );
421 CPPUNIT_ASSERT( !s.find( 20 ));
422 CPPUNIT_ASSERT( !s.empty() );
423 CPPUNIT_ASSERT( check_size( s, 1 ));
426 CPPUNIT_ASSERT( s.empty() );
427 CPPUNIT_ASSERT( check_size( s, 0 ));
430 CPPUNIT_ASSERT( s.emplace( 151 )) ; // key = 151, val = 1510
431 CPPUNIT_ASSERT( s.emplace( 174, 471 )) ; // key = 174, val = 471
432 CPPUNIT_ASSERT( s.emplace( std::make_pair( 190, 91 ) )) ; // key == 190, val = 91
433 CPPUNIT_ASSERT( !s.empty() );
434 CPPUNIT_ASSERT( check_size( s, 3 ));
436 CPPUNIT_ASSERT( s.find(151));
437 CPPUNIT_ASSERT( s.find_with(174, less()));
438 CPPUNIT_ASSERT( s.find(190));
441 copy_found<value_type> f;
444 CPPUNIT_ASSERT( s.find( key, std::ref( f ) ) );
445 CPPUNIT_ASSERT( f.m_found.nKey == 151 );
446 CPPUNIT_ASSERT( f.m_found.nVal == 1510 );
449 CPPUNIT_ASSERT( s.find( key, std::ref( f ) ) );
450 CPPUNIT_ASSERT( f.m_found.nKey == 174 );
451 CPPUNIT_ASSERT( f.m_found.nVal == 471 );
454 CPPUNIT_ASSERT( s.find( key, std::ref( f ) ) );
455 CPPUNIT_ASSERT( f.m_found.nKey == 190 );
456 CPPUNIT_ASSERT( f.m_found.nVal == 91 );
460 CPPUNIT_ASSERT( s.empty() );
461 CPPUNIT_ASSERT( check_size( s, 0 ));
464 template <typename Set>
465 void fill_set( Set& s, data_array& a )
467 CPPUNIT_ASSERT( s.empty() );
468 for ( size_t i = 0; i < c_nItemCount; ++i ) {
469 CPPUNIT_ASSERT( s.insert( a[i] ));
471 CPPUNIT_ASSERT( !s.empty() );
472 CPPUNIT_ASSERT( check_size( s, c_nItemCount ));
476 template <class Set, class PrintStat>
479 typedef Set set_type;
486 CPPUNIT_ASSERT( s.empty() );
487 CPPUNIT_ASSERT( check_size( s, 0 ));
491 typename Set::guarded_ptr gp;
497 while ( !s.empty() ) {
498 CPPUNIT_ASSERT( s.extract_min( gp ) );
499 CPPUNIT_ASSERT( gp->nKey == i );
502 CPPUNIT_ASSERT( s.empty() );
503 CPPUNIT_ASSERT( check_size( s, 0 ));
506 i = (int) c_nItemCount - 1;
507 while ( !s.empty() ) {
508 CPPUNIT_ASSERT( s.extract_max( gp ) );
509 CPPUNIT_ASSERT( gp->nKey == i );
512 CPPUNIT_ASSERT( s.empty() );
513 CPPUNIT_ASSERT( check_size( s, 0 ));
516 for ( int i = 0; i < static_cast<int>( c_nItemCount ); ++i ) {
518 CPPUNIT_ASSERT( s.get( gp, nKey ));
519 CPPUNIT_ASSERT( !gp.empty());
520 CPPUNIT_CHECK( gp->nKey == nKey );
523 CPPUNIT_ASSERT( s.extract( gp, nKey ));
524 CPPUNIT_ASSERT( !gp.empty());
525 CPPUNIT_CHECK( gp->nKey == nKey );
528 CPPUNIT_CHECK( !s.get( gp, nKey ));
529 CPPUNIT_CHECK( gp.empty());
530 CPPUNIT_CHECK( !s.extract( gp, nKey ));
531 CPPUNIT_CHECK( gp.empty());
533 CPPUNIT_ASSERT( s.empty() );
534 CPPUNIT_ASSERT( check_size( s, 0 ));
537 for ( int i = 0; i < static_cast<int>( c_nItemCount ); ++i ) {
539 CPPUNIT_ASSERT( s.get_with( gp, wrapped_int(nKey), wrapped_less() ));
540 CPPUNIT_ASSERT( !gp.empty());
541 CPPUNIT_CHECK( gp->nKey == nKey );
544 CPPUNIT_ASSERT( s.extract_with( gp, wrapped_int(nKey), wrapped_less() ));
545 CPPUNIT_ASSERT( !gp.empty());
546 CPPUNIT_CHECK( gp->nKey == nKey );
549 CPPUNIT_CHECK( !s.get_with( gp, wrapped_int(nKey), wrapped_less() ));
550 CPPUNIT_CHECK( gp.empty());
551 CPPUNIT_CHECK( !s.extract_with( gp, wrapped_int(nKey), wrapped_less() ));
552 CPPUNIT_CHECK( gp.empty());
554 CPPUNIT_ASSERT( s.empty() );
555 CPPUNIT_ASSERT( check_size( s, 0 ));
561 template <class Set, class PrintStat>
564 typedef Set set_type;
571 CPPUNIT_ASSERT( s.empty() );
572 CPPUNIT_ASSERT( check_size( s, 0 ));
576 typename set_type::exempt_ptr ep;
582 while ( !s.empty() ) {
583 CPPUNIT_ASSERT( s.extract_min( ep ) );
584 CPPUNIT_ASSERT( !ep.empty());
585 CPPUNIT_CHECK( ep->nKey == i );
589 CPPUNIT_ASSERT( s.empty() );
590 CPPUNIT_ASSERT( check_size( s, 0 ));
593 i = (int) c_nItemCount - 1;
594 while ( !s.empty() ) {
595 CPPUNIT_ASSERT( s.extract_max( ep ) );
596 CPPUNIT_ASSERT( !ep.empty());
597 CPPUNIT_CHECK( ep->nKey == i );
601 CPPUNIT_ASSERT( s.empty() );
602 CPPUNIT_ASSERT( check_size( s, 0 ));
605 for ( size_t i = 0; i < c_nItemCount; ++i ) {
608 typename set_type::rcu_lock l;
609 value_type * p = s.get( nKey );
610 CPPUNIT_ASSERT( p != nullptr );
611 CPPUNIT_CHECK( p->nKey == nKey );
613 CPPUNIT_ASSERT( s.extract( ep, nKey ));
614 CPPUNIT_ASSERT( !ep.empty());
615 CPPUNIT_CHECK( ep->nKey == nKey);
619 typename set_type::rcu_lock l;
620 CPPUNIT_CHECK( s.get( nKey ) == nullptr );
622 CPPUNIT_CHECK( !s.extract( ep, nKey ));
624 CPPUNIT_ASSERT( s.empty() );
625 CPPUNIT_ASSERT( check_size( s, 0 ));
628 for ( size_t i = 0; i < c_nItemCount; ++i ) {
631 typename set_type::rcu_lock l;
632 value_type * p = s.get_with( wrapped_int(nKey), wrapped_less() );
633 CPPUNIT_ASSERT( p != nullptr );
634 CPPUNIT_CHECK( p->nKey == nKey );
636 CPPUNIT_ASSERT( s.extract_with( ep, wrapped_int(nKey), wrapped_less() ));
637 CPPUNIT_ASSERT( !ep.empty());
638 CPPUNIT_CHECK( ep->nKey == nKey);
642 typename set_type::rcu_lock l;
643 CPPUNIT_CHECK( s.get_with( wrapped_int( nKey ), wrapped_less() ) == nullptr );
645 CPPUNIT_CHECK( !s.extract_with( ep, wrapped_int(nKey), wrapped_less() ));
647 CPPUNIT_ASSERT( s.empty() );
648 CPPUNIT_ASSERT( check_size( s, 0 ));
655 void EllenBinTree_hp_less();
656 void EllenBinTree_hp_cmp();
657 void EllenBinTree_hp_cmpless();
658 void EllenBinTree_hp_less_ic();
659 void EllenBinTree_hp_cmp_ic();
660 void EllenBinTree_hp_less_stat();
661 void EllenBinTree_hp_cmp_ic_stat();
662 void EllenBinTree_hp_less_pool();
663 void EllenBinTree_hp_less_pool_ic_stat();
665 void EllenBinTree_dhp_less();
666 void EllenBinTree_dhp_cmp();
667 void EllenBinTree_dhp_cmpless();
668 void EllenBinTree_dhp_less_ic();
669 void EllenBinTree_dhp_cmp_ic();
670 void EllenBinTree_dhp_less_stat();
671 void EllenBinTree_dhp_cmp_ic_stat();
672 void EllenBinTree_dhp_less_pool();
673 void EllenBinTree_dhp_less_pool_ic_stat();
675 void EllenBinTree_rcu_gpi_less();
676 void EllenBinTree_rcu_gpi_cmp();
677 void EllenBinTree_rcu_gpi_cmpless();
678 void EllenBinTree_rcu_gpi_less_ic();
679 void EllenBinTree_rcu_gpi_cmp_ic();
680 void EllenBinTree_rcu_gpi_less_stat();
681 void EllenBinTree_rcu_gpi_cmp_ic_stat();
682 void EllenBinTree_rcu_gpi_less_pool();
683 void EllenBinTree_rcu_gpi_less_pool_ic_stat();
685 void EllenBinTree_rcu_gpb_less();
686 void EllenBinTree_rcu_gpb_cmp();
687 void EllenBinTree_rcu_gpb_cmpless();
688 void EllenBinTree_rcu_gpb_less_ic();
689 void EllenBinTree_rcu_gpb_cmp_ic();
690 void EllenBinTree_rcu_gpb_less_stat();
691 void EllenBinTree_rcu_gpb_cmp_ic_stat();
692 void EllenBinTree_rcu_gpb_less_pool();
693 void EllenBinTree_rcu_gpb_less_pool_ic_stat();
695 void EllenBinTree_rcu_gpt_less();
696 void EllenBinTree_rcu_gpt_cmp();
697 void EllenBinTree_rcu_gpt_cmpless();
698 void EllenBinTree_rcu_gpt_less_ic();
699 void EllenBinTree_rcu_gpt_cmp_ic();
700 void EllenBinTree_rcu_gpt_less_stat();
701 void EllenBinTree_rcu_gpt_cmp_ic_stat();
702 void EllenBinTree_rcu_gpt_less_pool();
703 void EllenBinTree_rcu_gpt_less_pool_ic_stat();
705 void EllenBinTree_rcu_shb_less();
706 void EllenBinTree_rcu_shb_cmp();
707 void EllenBinTree_rcu_shb_cmpless();
708 void EllenBinTree_rcu_shb_less_ic();
709 void EllenBinTree_rcu_shb_cmp_ic();
710 void EllenBinTree_rcu_shb_less_stat();
711 void EllenBinTree_rcu_shb_cmp_ic_stat();
712 void EllenBinTree_rcu_shb_less_pool();
713 void EllenBinTree_rcu_shb_less_pool_ic_stat();
715 void EllenBinTree_rcu_sht_less();
716 void EllenBinTree_rcu_sht_cmp();
717 void EllenBinTree_rcu_sht_cmpless();
718 void EllenBinTree_rcu_sht_less_ic();
719 void EllenBinTree_rcu_sht_cmp_ic();
720 void EllenBinTree_rcu_sht_less_stat();
721 void EllenBinTree_rcu_sht_cmp_ic_stat();
722 void EllenBinTree_rcu_sht_less_pool();
723 void EllenBinTree_rcu_sht_less_pool_ic_stat();
725 CPPUNIT_TEST_SUITE(EllenBinTreeSetHdrTest)
726 CPPUNIT_TEST(EllenBinTree_hp_less)
727 CPPUNIT_TEST(EllenBinTree_hp_cmp)
728 CPPUNIT_TEST(EllenBinTree_hp_less_stat)
729 CPPUNIT_TEST(EllenBinTree_hp_cmpless)
730 CPPUNIT_TEST(EllenBinTree_hp_less_ic)
731 CPPUNIT_TEST(EllenBinTree_hp_cmp_ic)
732 CPPUNIT_TEST(EllenBinTree_hp_cmp_ic_stat)
733 CPPUNIT_TEST(EllenBinTree_hp_less_pool)
734 CPPUNIT_TEST(EllenBinTree_hp_less_pool_ic_stat)
736 CPPUNIT_TEST(EllenBinTree_dhp_less)
737 CPPUNIT_TEST(EllenBinTree_dhp_cmp)
738 CPPUNIT_TEST(EllenBinTree_dhp_less_stat)
739 CPPUNIT_TEST(EllenBinTree_dhp_cmpless)
740 CPPUNIT_TEST(EllenBinTree_dhp_less_ic)
741 CPPUNIT_TEST(EllenBinTree_dhp_cmp_ic)
742 CPPUNIT_TEST(EllenBinTree_dhp_cmp_ic_stat)
743 CPPUNIT_TEST(EllenBinTree_dhp_less_pool)
744 CPPUNIT_TEST(EllenBinTree_dhp_less_pool_ic_stat)
746 CPPUNIT_TEST(EllenBinTree_rcu_gpi_less)
747 CPPUNIT_TEST(EllenBinTree_rcu_gpi_cmp)
748 CPPUNIT_TEST(EllenBinTree_rcu_gpi_less_stat)
749 CPPUNIT_TEST(EllenBinTree_rcu_gpi_cmpless)
750 CPPUNIT_TEST(EllenBinTree_rcu_gpi_less_ic)
751 CPPUNIT_TEST(EllenBinTree_rcu_gpi_cmp_ic)
752 CPPUNIT_TEST(EllenBinTree_rcu_gpi_cmp_ic_stat)
753 CPPUNIT_TEST(EllenBinTree_rcu_gpi_less_pool)
754 CPPUNIT_TEST(EllenBinTree_rcu_gpi_less_pool_ic_stat)
756 CPPUNIT_TEST(EllenBinTree_rcu_gpb_less)
757 CPPUNIT_TEST(EllenBinTree_rcu_gpb_cmp)
758 CPPUNIT_TEST(EllenBinTree_rcu_gpb_less_stat)
759 CPPUNIT_TEST(EllenBinTree_rcu_gpb_cmpless)
760 CPPUNIT_TEST(EllenBinTree_rcu_gpb_less_ic)
761 CPPUNIT_TEST(EllenBinTree_rcu_gpb_cmp_ic)
762 CPPUNIT_TEST(EllenBinTree_rcu_gpb_cmp_ic_stat)
763 CPPUNIT_TEST(EllenBinTree_rcu_gpb_less_pool)
764 CPPUNIT_TEST(EllenBinTree_rcu_gpb_less_pool_ic_stat)
766 CPPUNIT_TEST(EllenBinTree_rcu_gpt_less)
767 CPPUNIT_TEST(EllenBinTree_rcu_gpt_cmp)
768 CPPUNIT_TEST(EllenBinTree_rcu_gpt_less_stat)
769 CPPUNIT_TEST(EllenBinTree_rcu_gpt_cmpless)
770 CPPUNIT_TEST(EllenBinTree_rcu_gpt_less_ic)
771 CPPUNIT_TEST(EllenBinTree_rcu_gpt_cmp_ic)
772 CPPUNIT_TEST(EllenBinTree_rcu_gpt_cmp_ic_stat)
773 CPPUNIT_TEST(EllenBinTree_rcu_gpt_less_pool)
774 CPPUNIT_TEST(EllenBinTree_rcu_gpt_less_pool_ic_stat)
776 CPPUNIT_TEST(EllenBinTree_rcu_shb_less)
777 CPPUNIT_TEST(EllenBinTree_rcu_shb_cmp)
778 CPPUNIT_TEST(EllenBinTree_rcu_shb_less_stat)
779 CPPUNIT_TEST(EllenBinTree_rcu_shb_cmpless)
780 CPPUNIT_TEST(EllenBinTree_rcu_shb_less_ic)
781 CPPUNIT_TEST(EllenBinTree_rcu_shb_cmp_ic)
782 CPPUNIT_TEST(EllenBinTree_rcu_shb_cmp_ic_stat)
783 CPPUNIT_TEST(EllenBinTree_rcu_shb_less_pool)
784 CPPUNIT_TEST(EllenBinTree_rcu_shb_less_pool_ic_stat)
786 CPPUNIT_TEST(EllenBinTree_rcu_sht_less)
787 CPPUNIT_TEST(EllenBinTree_rcu_sht_cmp)
788 CPPUNIT_TEST(EllenBinTree_rcu_sht_less_stat)
789 CPPUNIT_TEST(EllenBinTree_rcu_sht_cmpless)
790 CPPUNIT_TEST(EllenBinTree_rcu_sht_less_ic)
791 CPPUNIT_TEST(EllenBinTree_rcu_sht_cmp_ic)
792 CPPUNIT_TEST(EllenBinTree_rcu_sht_cmp_ic_stat)
793 CPPUNIT_TEST(EllenBinTree_rcu_sht_less_pool)
794 CPPUNIT_TEST(EllenBinTree_rcu_sht_less_pool_ic_stat)
796 CPPUNIT_TEST_SUITE_END()
800 #endif // #ifndef CDSHDRTEST_ELLENBINTREE_SET_H