3 #ifndef CDSHDRTEST_ELLENBINTREE_MAP_H
4 #define CDSHDRTEST_ELLENBINTREE_MAP_H
6 #include "cppunit/cppunit_proxy.h"
7 #include "size_check.h"
8 #include <functional> // ref
12 using misc::check_size;
14 class EllenBinTreeMapHdrTest: 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)
37 struct value_type: public stat_data
49 value_type( value_type const& v )
53 value_type( value_type&& v )
57 value_type& operator=( int n )
63 value_type& operator=( value_type const& v )
70 typedef std::pair<key_type const, value_type> pair_type;
73 bool operator()( int k1, int k2 ) const
80 int cmp( int k1, int k2 ) const
82 return k1 < k2 ? -1 : (k1 > k2 ? 1 : 0);
84 int operator()( int k1, int k2 ) const
100 bool operator()( wrapped_int const& w, int n ) const
104 bool operator()( int n, wrapped_int const& w ) const
109 template <typename T>
110 bool operator()( wrapped_int const& w, T const& v ) const
112 return w.nKey < v.nKey;
114 template <typename T>
115 bool operator()( T const& v, wrapped_int const& w ) const
117 return v.nKey < w.nKey;
123 template <typename Map>
124 struct insert_functor
126 typedef typename Map::value_type pair_type;
129 void operator()( pair_type& item )
131 item.second.nVal = item.first * 3;
135 void operator()( bool bNew, pair_type& item )
138 item.second.nVal = item.first * 2;
140 item.second.nVal = item.first * 5;
147 check_value( int nExpected )
148 : m_nExpected( nExpected )
151 template <typename T>
152 void operator ()( T& pair )
154 CPPUNIT_ASSERT_CURRENT( pair.second.nVal == m_nExpected );
156 template <typename T, typename Q>
157 void operator ()( T& pair, Q )
159 CPPUNIT_ASSERT_CURRENT( pair.second.nVal == m_nExpected );
163 struct extract_functor
166 void operator()( pair_type const& val )
168 *m_pVal = val.second.nVal;
173 static const size_t c_nItemCount = 10000;
182 : pFirst( new int[c_nItemCount] )
183 , pLast( pFirst + c_nItemCount )
186 for ( int * p = pFirst; p != pLast; ++p, ++i )
189 std::random_shuffle( pFirst, pLast );
197 int operator[]( size_t i ) const
199 assert( i < size_t(pLast - pFirst) );
204 struct extract_functor2
208 template <typename Q>
209 void operator()( Q&, pair_type& v )
219 void test_with( Map& m )
221 std::pair<bool, bool> ensureResult;
224 CPPUNIT_ASSERT( m.empty() );
225 CPPUNIT_ASSERT( check_size( m, 0 ));
226 CPPUNIT_ASSERT( !m.find(25) );
227 CPPUNIT_ASSERT( m.insert( 25 ) ) ; // value = 0
228 CPPUNIT_ASSERT( m.find(25) );
229 CPPUNIT_ASSERT( !m.empty() );
230 CPPUNIT_ASSERT( check_size( m, 1 ));
231 CPPUNIT_ASSERT( m.find(25) );
233 CPPUNIT_ASSERT( !m.insert( 25 ) );
234 CPPUNIT_ASSERT( !m.empty() );
235 CPPUNIT_ASSERT( check_size( m, 1 ));
237 CPPUNIT_ASSERT( !m.find_with(10, less()) );
238 CPPUNIT_ASSERT( m.insert( 10, 10 ) );
239 CPPUNIT_ASSERT( !m.empty() );
240 CPPUNIT_ASSERT( check_size( m, 2 ));
241 CPPUNIT_ASSERT( m.find_with(10, less()) );
243 CPPUNIT_ASSERT( !m.insert( 10, 20 ) );
244 CPPUNIT_ASSERT( !m.empty() );
245 CPPUNIT_ASSERT( check_size( m, 2 ));
247 CPPUNIT_ASSERT( !m.find(30) );
248 CPPUNIT_ASSERT( m.insert_key( 30, insert_functor<Map>() ) ) ; // value = 90
249 CPPUNIT_ASSERT( !m.empty() );
250 CPPUNIT_ASSERT( check_size( m, 3 ));
251 CPPUNIT_ASSERT( m.find(30) );
253 CPPUNIT_ASSERT( !m.insert_key( 10, insert_functor<Map>() ) );
254 CPPUNIT_ASSERT( !m.insert_key( 25, insert_functor<Map>() ) );
255 CPPUNIT_ASSERT( !m.insert_key( 30, insert_functor<Map>() ) );
258 CPPUNIT_ASSERT( !m.find(27) );
259 ensureResult = m.ensure( 27, insert_functor<Map>() ) ; // value = 54
260 CPPUNIT_ASSERT( ensureResult.first );
261 CPPUNIT_ASSERT( ensureResult.second );
262 CPPUNIT_ASSERT( m.find(27) );
266 CPPUNIT_ASSERT( m.find( 10, std::ref(chk) ));
268 CPPUNIT_ASSERT( m.find_with( 25, less(), std::ref( chk ) ) );
269 chk.m_nExpected = 90;
270 CPPUNIT_ASSERT( m.find( 30, std::ref( chk ) ) );
271 chk.m_nExpected = 54;
272 CPPUNIT_ASSERT( m.find( 27, std::ref( chk ) ) );
274 ensureResult = m.ensure( 10, insert_functor<Map>() ) ; // value = 50
275 CPPUNIT_ASSERT( ensureResult.first );
276 CPPUNIT_ASSERT( !ensureResult.second );
277 chk.m_nExpected = 50;
278 CPPUNIT_ASSERT( m.find( 10, std::ref( chk ) ) );
281 CPPUNIT_ASSERT( !m.find(100) );
282 CPPUNIT_ASSERT( !m.erase( 100 )) ; // not found
284 CPPUNIT_ASSERT( m.find(25) );
285 CPPUNIT_ASSERT( check_size( m, 4 ));
286 CPPUNIT_ASSERT( m.erase( 25 ));
287 CPPUNIT_ASSERT( !m.empty() );
288 CPPUNIT_ASSERT( check_size( m, 3 ));
289 CPPUNIT_ASSERT( !m.find(25) );
290 CPPUNIT_ASSERT( !m.erase( 25 ));
292 CPPUNIT_ASSERT( !m.find(258) );
293 CPPUNIT_ASSERT( m.insert(258))
294 CPPUNIT_ASSERT( check_size( m, 4 ));
295 CPPUNIT_ASSERT( m.find_with(258, less()) );
296 CPPUNIT_ASSERT( m.erase_with( 258, less() ));
297 CPPUNIT_ASSERT( !m.empty() );
298 CPPUNIT_ASSERT( check_size( m, 3 ));
299 CPPUNIT_ASSERT( !m.find(258) );
300 CPPUNIT_ASSERT( !m.erase_with( 258, less() ));
306 CPPUNIT_ASSERT( !m.find(29) );
307 CPPUNIT_ASSERT( m.insert(29, 290));
308 CPPUNIT_ASSERT( check_size( m, 4 ));
309 CPPUNIT_ASSERT( m.erase_with( 29, less(), std::ref( ext ) ) );
310 CPPUNIT_ASSERT( !m.empty() );
311 CPPUNIT_ASSERT( check_size( m, 3 ));
312 CPPUNIT_ASSERT( nVal == 290 );
314 CPPUNIT_ASSERT( !m.erase_with( 29, less(), std::ref( ext ) ) );
315 CPPUNIT_ASSERT( nVal == -1 );
317 CPPUNIT_ASSERT( m.erase( 30, std::ref( ext ) ) );
318 CPPUNIT_ASSERT( !m.empty() );
319 CPPUNIT_ASSERT( check_size( m, 2 ));
320 CPPUNIT_ASSERT( nVal == 90 );
322 CPPUNIT_ASSERT( !m.erase( 30, std::ref( ext ) ) );
323 CPPUNIT_ASSERT( nVal == -1 );
326 CPPUNIT_ASSERT( m.empty() );
327 CPPUNIT_ASSERT( check_size( m, 0 ));
330 CPPUNIT_ASSERT( m.emplace(126) ) ; // key = 126, val = 0
331 CPPUNIT_ASSERT( m.emplace(137, 731)) ; // key = 137, val = 731
332 CPPUNIT_ASSERT( m.emplace( 149, value_type(941) )) ; // key = 149, val = 941
334 CPPUNIT_ASSERT( !m.empty() );
335 CPPUNIT_ASSERT( check_size( m, 3 ));
338 CPPUNIT_ASSERT( m.find( 126, std::ref(chk) ));
339 chk.m_nExpected = 731;
340 CPPUNIT_ASSERT( m.find_with( 137, less(), std::ref(chk) ));
341 chk.m_nExpected = 941;
342 CPPUNIT_ASSERT( m.find( 149, std::ref(chk) ));
344 CPPUNIT_ASSERT( !m.emplace(126, 621)) ; // already in map
346 CPPUNIT_ASSERT( m.find( 126, std::ref(chk) ));
347 CPPUNIT_ASSERT( !m.empty() );
348 CPPUNIT_ASSERT( check_size( m, 3 ));
351 CPPUNIT_ASSERT( m.empty() );
352 CPPUNIT_ASSERT( check_size( m, 0 ));
355 template <typename Map>
356 void fill_map( Map& s, data_array& a )
358 CPPUNIT_ASSERT( s.empty() );
359 for ( size_t i = 0; i < c_nItemCount; ++i ) {
360 CPPUNIT_ASSERT( s.insert( a[i] ));
362 CPPUNIT_ASSERT( !s.empty() );
363 CPPUNIT_ASSERT( check_size( s, c_nItemCount ));
366 template <class Map, class PrintStat>
369 typedef Map map_type;
376 CPPUNIT_ASSERT( m.empty() );
377 CPPUNIT_ASSERT( check_size( m, 0 ));
381 typename map_type::guarded_ptr gp;
387 std::pair<key_type, value_type> v;
388 while ( !m.empty() ) {
389 gp = m.extract_min();
390 CPPUNIT_ASSERT( gp );
391 CPPUNIT_ASSERT( !gp.empty());
392 CPPUNIT_ASSERT( gp->first == i );
395 CPPUNIT_ASSERT( m.empty() );
396 CPPUNIT_ASSERT( check_size( m, 0 ));
400 i = (int) c_nItemCount - 1;
401 while ( !m.empty() ) {
402 gp = m.extract_max();
403 CPPUNIT_ASSERT( gp );
404 CPPUNIT_ASSERT( !gp.empty());
405 CPPUNIT_ASSERT( gp->first == i );
408 CPPUNIT_ASSERT( m.empty() );
409 CPPUNIT_ASSERT( check_size( m, 0 ));
412 for ( int i = 0; i < static_cast<int>( c_nItemCount ); ++i ) {
415 CPPUNIT_ASSERT( gp );
416 CPPUNIT_ASSERT( !gp.empty());
417 CPPUNIT_CHECK( gp->first == nKey );
419 gp = m.extract( nKey );
420 CPPUNIT_ASSERT( gp );
421 CPPUNIT_ASSERT( !gp.empty());
422 CPPUNIT_CHECK( gp->first == nKey );
425 CPPUNIT_CHECK( !gp );
426 CPPUNIT_CHECK( gp.empty());
427 CPPUNIT_CHECK( !m.extract( nKey ));
428 CPPUNIT_CHECK( gp.empty());
430 CPPUNIT_ASSERT( m.empty() );
431 CPPUNIT_ASSERT( check_size( m, 0 ));
434 for ( int i = 0; i < static_cast<int>( c_nItemCount ); ++i ) {
436 gp = m.get_with( wrapped_int( nKey ), wrapped_less() );
437 CPPUNIT_ASSERT( gp );
438 CPPUNIT_ASSERT( !gp.empty());
439 CPPUNIT_CHECK( gp->first == nKey );
441 gp = m.extract_with( wrapped_int( nKey ), wrapped_less() );
442 CPPUNIT_ASSERT( gp );
443 CPPUNIT_ASSERT( !gp.empty());
444 CPPUNIT_CHECK( gp->first == nKey );
446 gp = m.get_with( wrapped_int( nKey ), wrapped_less() );
447 CPPUNIT_CHECK( !gp );
448 CPPUNIT_CHECK( gp.empty());
449 CPPUNIT_CHECK( !m.extract_with( wrapped_int(nKey), wrapped_less() ));
450 CPPUNIT_CHECK( gp.empty());
453 CPPUNIT_ASSERT( m.empty() );
454 CPPUNIT_ASSERT( check_size( m, 0 ));
460 template <class Map, class PrintStat>
463 typedef Map map_type;
470 CPPUNIT_ASSERT( m.empty() );
471 CPPUNIT_ASSERT( check_size( m, 0 ));
475 typename map_type::exempt_ptr ep;
480 while ( !m.empty() ) {
481 ep = m.extract_min();
482 CPPUNIT_ASSERT( ep );
483 CPPUNIT_ASSERT( !ep.empty());
484 CPPUNIT_ASSERT(ep->first == i );
488 CPPUNIT_ASSERT( m.empty() );
489 CPPUNIT_ASSERT( check_size( m, 0 ));
490 ep = m.extract_min();
491 CPPUNIT_ASSERT( !ep );
492 CPPUNIT_ASSERT( ep.empty());
495 i = (int) c_nItemCount - 1;
496 while ( !m.empty() ) {
497 ep = m.extract_max();
498 CPPUNIT_ASSERT( ep );
499 CPPUNIT_ASSERT( !ep.empty());
500 CPPUNIT_ASSERT( ep->first == i );
504 CPPUNIT_ASSERT( m.empty() );
505 CPPUNIT_ASSERT( check_size( m, 0 ));
506 ep = m.extract_max();
507 CPPUNIT_ASSERT( !ep );
508 CPPUNIT_ASSERT( ep.empty());
511 for ( size_t i = 0; i < c_nItemCount; ++i ) {
514 typename map_type::rcu_lock l;
515 typename map_type::value_type * pVal = m.get(nKey);
516 CPPUNIT_ASSERT( pVal != nullptr );
517 CPPUNIT_CHECK( pVal->first == nKey);
519 ep = m.extract( nKey );
520 CPPUNIT_ASSERT( ep );
521 CPPUNIT_ASSERT( !ep.empty());
522 CPPUNIT_CHECK( ep->first == nKey);
525 ep = m.extract( nKey );
526 CPPUNIT_ASSERT( !ep );
527 CPPUNIT_ASSERT( ep.empty());
529 typename map_type::rcu_lock l;
530 CPPUNIT_CHECK( !m.get(nKey));
533 CPPUNIT_ASSERT( m.empty() );
534 CPPUNIT_ASSERT( check_size( m, 0 ));
537 for ( size_t i = 0; i < c_nItemCount; ++i ) {
540 typename map_type::rcu_lock l;
541 typename map_type::value_type * pVal = m.get_with(wrapped_int(nKey), wrapped_less());
542 CPPUNIT_ASSERT( pVal != nullptr );
543 CPPUNIT_CHECK( pVal->first == nKey);
545 ep = m.extract_with( wrapped_int( nKey ), wrapped_less() );
546 CPPUNIT_ASSERT( ep );
547 CPPUNIT_ASSERT( !ep.empty());
548 CPPUNIT_CHECK( ep->first == nKey);
551 ep = m.extract_with( wrapped_int( nKey ), wrapped_less() );
552 CPPUNIT_ASSERT( !ep );
553 CPPUNIT_ASSERT( ep.empty());
555 typename map_type::rcu_lock l;
556 CPPUNIT_CHECK( !m.get_with(wrapped_int(nKey), wrapped_less()));
559 CPPUNIT_ASSERT( m.empty() );
560 CPPUNIT_ASSERT( check_size( m, 0 ));
566 void EllenBinTree_hp_less();
567 void EllenBinTree_hp_cmp();
568 void EllenBinTree_hp_cmpless();
569 void EllenBinTree_hp_less_ic();
570 void EllenBinTree_hp_cmp_ic();
571 void EllenBinTree_hp_less_stat();
572 void EllenBinTree_hp_cmp_ic_stat();
573 void EllenBinTree_hp_cmp_ic_stat_yield();
574 void EllenBinTree_hp_less_pool();
575 void EllenBinTree_hp_less_pool_ic_stat();
577 void EllenBinTree_dhp_less();
578 void EllenBinTree_dhp_cmp();
579 void EllenBinTree_dhp_cmpless();
580 void EllenBinTree_dhp_less_ic();
581 void EllenBinTree_dhp_cmp_ic();
582 void EllenBinTree_dhp_less_stat();
583 void EllenBinTree_dhp_cmp_ic_stat();
584 void EllenBinTree_dhp_cmp_ic_stat_yield();
585 void EllenBinTree_dhp_less_pool();
586 void EllenBinTree_dhp_less_pool_ic_stat();
588 void EllenBinTree_rcu_gpi_less();
589 void EllenBinTree_rcu_gpi_cmp();
590 void EllenBinTree_rcu_gpi_cmpless();
591 void EllenBinTree_rcu_gpi_less_ic();
592 void EllenBinTree_rcu_gpi_cmp_ic();
593 void EllenBinTree_rcu_gpi_less_stat();
594 void EllenBinTree_rcu_gpi_cmp_ic_stat();
595 void EllenBinTree_rcu_gpi_cmp_ic_stat_yield();
596 void EllenBinTree_rcu_gpi_less_pool();
597 void EllenBinTree_rcu_gpi_less_pool_ic_stat();
599 void EllenBinTree_rcu_gpb_less();
600 void EllenBinTree_rcu_gpb_cmp();
601 void EllenBinTree_rcu_gpb_cmpless();
602 void EllenBinTree_rcu_gpb_less_ic();
603 void EllenBinTree_rcu_gpb_cmp_ic();
604 void EllenBinTree_rcu_gpb_less_stat();
605 void EllenBinTree_rcu_gpb_cmp_ic_stat();
606 void EllenBinTree_rcu_gpb_cmp_ic_stat_yield();
607 void EllenBinTree_rcu_gpb_less_pool();
608 void EllenBinTree_rcu_gpb_less_pool_ic_stat();
610 void EllenBinTree_rcu_gpt_less();
611 void EllenBinTree_rcu_gpt_cmp();
612 void EllenBinTree_rcu_gpt_cmpless();
613 void EllenBinTree_rcu_gpt_less_ic();
614 void EllenBinTree_rcu_gpt_cmp_ic();
615 void EllenBinTree_rcu_gpt_less_stat();
616 void EllenBinTree_rcu_gpt_cmp_ic_stat();
617 void EllenBinTree_rcu_gpt_cmp_ic_stat_yield();
618 void EllenBinTree_rcu_gpt_less_pool();
619 void EllenBinTree_rcu_gpt_less_pool_ic_stat();
621 void EllenBinTree_rcu_shb_less();
622 void EllenBinTree_rcu_shb_cmp();
623 void EllenBinTree_rcu_shb_cmpless();
624 void EllenBinTree_rcu_shb_less_ic();
625 void EllenBinTree_rcu_shb_cmp_ic();
626 void EllenBinTree_rcu_shb_less_stat();
627 void EllenBinTree_rcu_shb_cmp_ic_stat();
628 void EllenBinTree_rcu_shb_cmp_ic_stat_yield();
629 void EllenBinTree_rcu_shb_less_pool();
630 void EllenBinTree_rcu_shb_less_pool_ic_stat();
632 void EllenBinTree_rcu_sht_less();
633 void EllenBinTree_rcu_sht_cmp();
634 void EllenBinTree_rcu_sht_cmpless();
635 void EllenBinTree_rcu_sht_less_ic();
636 void EllenBinTree_rcu_sht_cmp_ic();
637 void EllenBinTree_rcu_sht_less_stat();
638 void EllenBinTree_rcu_sht_cmp_ic_stat();
639 void EllenBinTree_rcu_sht_cmp_ic_stat_yield();
640 void EllenBinTree_rcu_sht_less_pool();
641 void EllenBinTree_rcu_sht_less_pool_ic_stat();
643 CPPUNIT_TEST_SUITE(EllenBinTreeMapHdrTest)
644 CPPUNIT_TEST(EllenBinTree_hp_less)
645 CPPUNIT_TEST(EllenBinTree_hp_cmp)
646 CPPUNIT_TEST(EllenBinTree_hp_less_stat)
647 CPPUNIT_TEST(EllenBinTree_hp_cmpless)
648 CPPUNIT_TEST(EllenBinTree_hp_less_ic)
649 CPPUNIT_TEST(EllenBinTree_hp_cmp_ic)
650 CPPUNIT_TEST(EllenBinTree_hp_cmp_ic_stat)
651 CPPUNIT_TEST( EllenBinTree_hp_cmp_ic_stat_yield )
652 CPPUNIT_TEST( EllenBinTree_hp_less_pool )
653 CPPUNIT_TEST(EllenBinTree_hp_less_pool_ic_stat)
655 CPPUNIT_TEST(EllenBinTree_dhp_less)
656 CPPUNIT_TEST(EllenBinTree_dhp_cmp)
657 CPPUNIT_TEST(EllenBinTree_dhp_less_stat)
658 CPPUNIT_TEST(EllenBinTree_dhp_cmpless)
659 CPPUNIT_TEST(EllenBinTree_dhp_less_ic)
660 CPPUNIT_TEST(EllenBinTree_dhp_cmp_ic)
661 CPPUNIT_TEST(EllenBinTree_dhp_cmp_ic_stat)
662 CPPUNIT_TEST( EllenBinTree_dhp_cmp_ic_stat_yield )
663 CPPUNIT_TEST( EllenBinTree_dhp_less_pool )
664 CPPUNIT_TEST(EllenBinTree_dhp_less_pool_ic_stat)
666 CPPUNIT_TEST(EllenBinTree_rcu_gpi_less)
667 CPPUNIT_TEST(EllenBinTree_rcu_gpi_cmp)
668 CPPUNIT_TEST(EllenBinTree_rcu_gpi_less_stat)
669 CPPUNIT_TEST(EllenBinTree_rcu_gpi_cmpless)
670 CPPUNIT_TEST(EllenBinTree_rcu_gpi_less_ic)
671 CPPUNIT_TEST(EllenBinTree_rcu_gpi_cmp_ic)
672 CPPUNIT_TEST(EllenBinTree_rcu_gpi_cmp_ic_stat)
673 CPPUNIT_TEST( EllenBinTree_rcu_gpi_cmp_ic_stat_yield )
674 CPPUNIT_TEST( EllenBinTree_rcu_gpi_less_pool )
675 CPPUNIT_TEST(EllenBinTree_rcu_gpi_less_pool_ic_stat)
677 CPPUNIT_TEST(EllenBinTree_rcu_gpb_less)
678 CPPUNIT_TEST(EllenBinTree_rcu_gpb_cmp)
679 CPPUNIT_TEST(EllenBinTree_rcu_gpb_less_stat)
680 CPPUNIT_TEST(EllenBinTree_rcu_gpb_cmpless)
681 CPPUNIT_TEST(EllenBinTree_rcu_gpb_less_ic)
682 CPPUNIT_TEST(EllenBinTree_rcu_gpb_cmp_ic)
683 CPPUNIT_TEST(EllenBinTree_rcu_gpb_cmp_ic_stat)
684 CPPUNIT_TEST( EllenBinTree_rcu_gpb_cmp_ic_stat_yield )
685 CPPUNIT_TEST( EllenBinTree_rcu_gpb_less_pool )
686 CPPUNIT_TEST(EllenBinTree_rcu_gpb_less_pool_ic_stat)
688 CPPUNIT_TEST(EllenBinTree_rcu_gpt_less)
689 CPPUNIT_TEST(EllenBinTree_rcu_gpt_cmp)
690 CPPUNIT_TEST(EllenBinTree_rcu_gpt_less_stat)
691 CPPUNIT_TEST(EllenBinTree_rcu_gpt_cmpless)
692 CPPUNIT_TEST(EllenBinTree_rcu_gpt_less_ic)
693 CPPUNIT_TEST(EllenBinTree_rcu_gpt_cmp_ic)
694 CPPUNIT_TEST(EllenBinTree_rcu_gpt_cmp_ic_stat)
695 CPPUNIT_TEST( EllenBinTree_rcu_gpt_cmp_ic_stat_yield )
696 CPPUNIT_TEST( EllenBinTree_rcu_gpt_less_pool )
697 CPPUNIT_TEST(EllenBinTree_rcu_gpt_less_pool_ic_stat)
699 CPPUNIT_TEST(EllenBinTree_rcu_shb_less)
700 CPPUNIT_TEST(EllenBinTree_rcu_shb_cmp)
701 CPPUNIT_TEST(EllenBinTree_rcu_shb_less_stat)
702 CPPUNIT_TEST(EllenBinTree_rcu_shb_cmpless)
703 CPPUNIT_TEST(EllenBinTree_rcu_shb_less_ic)
704 CPPUNIT_TEST(EllenBinTree_rcu_shb_cmp_ic)
705 CPPUNIT_TEST(EllenBinTree_rcu_shb_cmp_ic_stat)
706 CPPUNIT_TEST( EllenBinTree_rcu_shb_cmp_ic_stat_yield )
707 CPPUNIT_TEST( EllenBinTree_rcu_shb_less_pool )
708 CPPUNIT_TEST(EllenBinTree_rcu_shb_less_pool_ic_stat)
710 CPPUNIT_TEST(EllenBinTree_rcu_sht_less)
711 CPPUNIT_TEST(EllenBinTree_rcu_sht_cmp)
712 CPPUNIT_TEST(EllenBinTree_rcu_sht_less_stat)
713 CPPUNIT_TEST(EllenBinTree_rcu_sht_cmpless)
714 CPPUNIT_TEST(EllenBinTree_rcu_sht_less_ic)
715 CPPUNIT_TEST(EllenBinTree_rcu_sht_cmp_ic)
716 CPPUNIT_TEST(EllenBinTree_rcu_sht_cmp_ic_stat)
717 CPPUNIT_TEST( EllenBinTree_rcu_sht_cmp_ic_stat_yield )
718 CPPUNIT_TEST( EllenBinTree_rcu_sht_less_pool )
719 CPPUNIT_TEST(EllenBinTree_rcu_sht_less_pool_ic_stat)
721 CPPUNIT_TEST_SUITE_END()
726 #endif // #ifndef CDSHDRTEST_ELLENBINTREE_MAP_H