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 CPPUNIT_ASSERT( m.extract_min( gp ) );
390 CPPUNIT_ASSERT( !gp.empty());
391 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 CPPUNIT_ASSERT( m.extract_max( gp ) );
403 CPPUNIT_ASSERT( !gp.empty());
404 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 ) {
414 CPPUNIT_ASSERT( m.get( gp, nKey ));
415 CPPUNIT_ASSERT( !gp.empty());
416 CPPUNIT_CHECK( gp->first == nKey );
419 CPPUNIT_ASSERT( m.extract( gp, nKey ));
420 CPPUNIT_ASSERT( !gp.empty());
421 CPPUNIT_CHECK( gp->first == nKey );
424 CPPUNIT_CHECK( !m.get( gp, nKey ));
425 CPPUNIT_CHECK( gp.empty());
426 CPPUNIT_CHECK( !m.extract( gp, nKey ));
427 CPPUNIT_CHECK( gp.empty());
429 CPPUNIT_ASSERT( m.empty() );
430 CPPUNIT_ASSERT( check_size( m, 0 ));
433 for ( int i = 0; i < static_cast<int>( c_nItemCount ); ++i ) {
435 CPPUNIT_ASSERT( m.get_with( gp, wrapped_int(nKey), wrapped_less() ));
436 CPPUNIT_ASSERT( !gp.empty());
437 CPPUNIT_CHECK( gp->first == nKey );
440 CPPUNIT_ASSERT( m.extract_with( gp, wrapped_int(nKey), wrapped_less() ));
441 CPPUNIT_ASSERT( !gp.empty());
442 CPPUNIT_CHECK( gp->first == nKey );
445 CPPUNIT_CHECK( !m.get_with( gp, wrapped_int(nKey), wrapped_less() ));
446 CPPUNIT_CHECK( gp.empty());
447 CPPUNIT_CHECK( !m.extract_with( gp, wrapped_int(nKey), wrapped_less() ));
448 CPPUNIT_CHECK( gp.empty());
451 CPPUNIT_ASSERT( m.empty() );
452 CPPUNIT_ASSERT( check_size( m, 0 ));
458 template <class Map, class PrintStat>
461 typedef Map map_type;
468 CPPUNIT_ASSERT( m.empty() );
469 CPPUNIT_ASSERT( check_size( m, 0 ));
473 typename map_type::exempt_ptr ep;
478 while ( !m.empty() ) {
479 ep = m.extract_min();
480 CPPUNIT_ASSERT( ep );
481 CPPUNIT_ASSERT( !ep.empty());
482 CPPUNIT_ASSERT(ep->first == i );
486 CPPUNIT_ASSERT( m.empty() );
487 CPPUNIT_ASSERT( check_size( m, 0 ));
488 ep = m.extract_min();
489 CPPUNIT_ASSERT( !ep );
490 CPPUNIT_ASSERT( ep.empty());
493 i = (int) c_nItemCount - 1;
494 while ( !m.empty() ) {
495 ep = m.extract_max();
496 CPPUNIT_ASSERT( ep );
497 CPPUNIT_ASSERT( !ep.empty());
498 CPPUNIT_ASSERT( ep->first == i );
502 CPPUNIT_ASSERT( m.empty() );
503 CPPUNIT_ASSERT( check_size( m, 0 ));
504 ep = m.extract_max();
505 CPPUNIT_ASSERT( !ep );
506 CPPUNIT_ASSERT( ep.empty());
509 for ( size_t i = 0; i < c_nItemCount; ++i ) {
512 typename map_type::rcu_lock l;
513 typename map_type::value_type * pVal = m.get(nKey);
514 CPPUNIT_ASSERT( pVal != nullptr );
515 CPPUNIT_CHECK( pVal->first == nKey);
517 ep = m.extract( nKey );
518 CPPUNIT_ASSERT( ep );
519 CPPUNIT_ASSERT( !ep.empty());
520 CPPUNIT_CHECK( ep->first == nKey);
523 ep = m.extract( nKey );
524 CPPUNIT_ASSERT( !ep );
525 CPPUNIT_ASSERT( ep.empty());
527 typename map_type::rcu_lock l;
528 CPPUNIT_CHECK( !m.get(nKey));
531 CPPUNIT_ASSERT( m.empty() );
532 CPPUNIT_ASSERT( check_size( m, 0 ));
535 for ( size_t i = 0; i < c_nItemCount; ++i ) {
538 typename map_type::rcu_lock l;
539 typename map_type::value_type * pVal = m.get_with(wrapped_int(nKey), wrapped_less());
540 CPPUNIT_ASSERT( pVal != nullptr );
541 CPPUNIT_CHECK( pVal->first == nKey);
543 ep = m.extract_with( wrapped_int( nKey ), wrapped_less() );
544 CPPUNIT_ASSERT( ep );
545 CPPUNIT_ASSERT( !ep.empty());
546 CPPUNIT_CHECK( ep->first == nKey);
549 ep = m.extract_with( wrapped_int( nKey ), wrapped_less() );
550 CPPUNIT_ASSERT( !ep );
551 CPPUNIT_ASSERT( ep.empty());
553 typename map_type::rcu_lock l;
554 CPPUNIT_CHECK( !m.get_with(wrapped_int(nKey), wrapped_less()));
557 CPPUNIT_ASSERT( m.empty() );
558 CPPUNIT_ASSERT( check_size( m, 0 ));
564 void EllenBinTree_hp_less();
565 void EllenBinTree_hp_cmp();
566 void EllenBinTree_hp_cmpless();
567 void EllenBinTree_hp_less_ic();
568 void EllenBinTree_hp_cmp_ic();
569 void EllenBinTree_hp_less_stat();
570 void EllenBinTree_hp_cmp_ic_stat();
571 void EllenBinTree_hp_cmp_ic_stat_yield();
572 void EllenBinTree_hp_less_pool();
573 void EllenBinTree_hp_less_pool_ic_stat();
575 void EllenBinTree_dhp_less();
576 void EllenBinTree_dhp_cmp();
577 void EllenBinTree_dhp_cmpless();
578 void EllenBinTree_dhp_less_ic();
579 void EllenBinTree_dhp_cmp_ic();
580 void EllenBinTree_dhp_less_stat();
581 void EllenBinTree_dhp_cmp_ic_stat();
582 void EllenBinTree_dhp_cmp_ic_stat_yield();
583 void EllenBinTree_dhp_less_pool();
584 void EllenBinTree_dhp_less_pool_ic_stat();
586 void EllenBinTree_rcu_gpi_less();
587 void EllenBinTree_rcu_gpi_cmp();
588 void EllenBinTree_rcu_gpi_cmpless();
589 void EllenBinTree_rcu_gpi_less_ic();
590 void EllenBinTree_rcu_gpi_cmp_ic();
591 void EllenBinTree_rcu_gpi_less_stat();
592 void EllenBinTree_rcu_gpi_cmp_ic_stat();
593 void EllenBinTree_rcu_gpi_cmp_ic_stat_yield();
594 void EllenBinTree_rcu_gpi_less_pool();
595 void EllenBinTree_rcu_gpi_less_pool_ic_stat();
597 void EllenBinTree_rcu_gpb_less();
598 void EllenBinTree_rcu_gpb_cmp();
599 void EllenBinTree_rcu_gpb_cmpless();
600 void EllenBinTree_rcu_gpb_less_ic();
601 void EllenBinTree_rcu_gpb_cmp_ic();
602 void EllenBinTree_rcu_gpb_less_stat();
603 void EllenBinTree_rcu_gpb_cmp_ic_stat();
604 void EllenBinTree_rcu_gpb_cmp_ic_stat_yield();
605 void EllenBinTree_rcu_gpb_less_pool();
606 void EllenBinTree_rcu_gpb_less_pool_ic_stat();
608 void EllenBinTree_rcu_gpt_less();
609 void EllenBinTree_rcu_gpt_cmp();
610 void EllenBinTree_rcu_gpt_cmpless();
611 void EllenBinTree_rcu_gpt_less_ic();
612 void EllenBinTree_rcu_gpt_cmp_ic();
613 void EllenBinTree_rcu_gpt_less_stat();
614 void EllenBinTree_rcu_gpt_cmp_ic_stat();
615 void EllenBinTree_rcu_gpt_cmp_ic_stat_yield();
616 void EllenBinTree_rcu_gpt_less_pool();
617 void EllenBinTree_rcu_gpt_less_pool_ic_stat();
619 void EllenBinTree_rcu_shb_less();
620 void EllenBinTree_rcu_shb_cmp();
621 void EllenBinTree_rcu_shb_cmpless();
622 void EllenBinTree_rcu_shb_less_ic();
623 void EllenBinTree_rcu_shb_cmp_ic();
624 void EllenBinTree_rcu_shb_less_stat();
625 void EllenBinTree_rcu_shb_cmp_ic_stat();
626 void EllenBinTree_rcu_shb_cmp_ic_stat_yield();
627 void EllenBinTree_rcu_shb_less_pool();
628 void EllenBinTree_rcu_shb_less_pool_ic_stat();
630 void EllenBinTree_rcu_sht_less();
631 void EllenBinTree_rcu_sht_cmp();
632 void EllenBinTree_rcu_sht_cmpless();
633 void EllenBinTree_rcu_sht_less_ic();
634 void EllenBinTree_rcu_sht_cmp_ic();
635 void EllenBinTree_rcu_sht_less_stat();
636 void EllenBinTree_rcu_sht_cmp_ic_stat();
637 void EllenBinTree_rcu_sht_cmp_ic_stat_yield();
638 void EllenBinTree_rcu_sht_less_pool();
639 void EllenBinTree_rcu_sht_less_pool_ic_stat();
641 CPPUNIT_TEST_SUITE(EllenBinTreeMapHdrTest)
642 CPPUNIT_TEST(EllenBinTree_hp_less)
643 CPPUNIT_TEST(EllenBinTree_hp_cmp)
644 CPPUNIT_TEST(EllenBinTree_hp_less_stat)
645 CPPUNIT_TEST(EllenBinTree_hp_cmpless)
646 CPPUNIT_TEST(EllenBinTree_hp_less_ic)
647 CPPUNIT_TEST(EllenBinTree_hp_cmp_ic)
648 CPPUNIT_TEST(EllenBinTree_hp_cmp_ic_stat)
649 CPPUNIT_TEST( EllenBinTree_hp_cmp_ic_stat_yield )
650 CPPUNIT_TEST( EllenBinTree_hp_less_pool )
651 CPPUNIT_TEST(EllenBinTree_hp_less_pool_ic_stat)
653 CPPUNIT_TEST(EllenBinTree_dhp_less)
654 CPPUNIT_TEST(EllenBinTree_dhp_cmp)
655 CPPUNIT_TEST(EllenBinTree_dhp_less_stat)
656 CPPUNIT_TEST(EllenBinTree_dhp_cmpless)
657 CPPUNIT_TEST(EllenBinTree_dhp_less_ic)
658 CPPUNIT_TEST(EllenBinTree_dhp_cmp_ic)
659 CPPUNIT_TEST(EllenBinTree_dhp_cmp_ic_stat)
660 CPPUNIT_TEST( EllenBinTree_dhp_cmp_ic_stat_yield )
661 CPPUNIT_TEST( EllenBinTree_dhp_less_pool )
662 CPPUNIT_TEST(EllenBinTree_dhp_less_pool_ic_stat)
664 CPPUNIT_TEST(EllenBinTree_rcu_gpi_less)
665 CPPUNIT_TEST(EllenBinTree_rcu_gpi_cmp)
666 CPPUNIT_TEST(EllenBinTree_rcu_gpi_less_stat)
667 CPPUNIT_TEST(EllenBinTree_rcu_gpi_cmpless)
668 CPPUNIT_TEST(EllenBinTree_rcu_gpi_less_ic)
669 CPPUNIT_TEST(EllenBinTree_rcu_gpi_cmp_ic)
670 CPPUNIT_TEST(EllenBinTree_rcu_gpi_cmp_ic_stat)
671 CPPUNIT_TEST( EllenBinTree_rcu_gpi_cmp_ic_stat_yield )
672 CPPUNIT_TEST( EllenBinTree_rcu_gpi_less_pool )
673 CPPUNIT_TEST(EllenBinTree_rcu_gpi_less_pool_ic_stat)
675 CPPUNIT_TEST(EllenBinTree_rcu_gpb_less)
676 CPPUNIT_TEST(EllenBinTree_rcu_gpb_cmp)
677 CPPUNIT_TEST(EllenBinTree_rcu_gpb_less_stat)
678 CPPUNIT_TEST(EllenBinTree_rcu_gpb_cmpless)
679 CPPUNIT_TEST(EllenBinTree_rcu_gpb_less_ic)
680 CPPUNIT_TEST(EllenBinTree_rcu_gpb_cmp_ic)
681 CPPUNIT_TEST(EllenBinTree_rcu_gpb_cmp_ic_stat)
682 CPPUNIT_TEST( EllenBinTree_rcu_gpb_cmp_ic_stat_yield )
683 CPPUNIT_TEST( EllenBinTree_rcu_gpb_less_pool )
684 CPPUNIT_TEST(EllenBinTree_rcu_gpb_less_pool_ic_stat)
686 CPPUNIT_TEST(EllenBinTree_rcu_gpt_less)
687 CPPUNIT_TEST(EllenBinTree_rcu_gpt_cmp)
688 CPPUNIT_TEST(EllenBinTree_rcu_gpt_less_stat)
689 CPPUNIT_TEST(EllenBinTree_rcu_gpt_cmpless)
690 CPPUNIT_TEST(EllenBinTree_rcu_gpt_less_ic)
691 CPPUNIT_TEST(EllenBinTree_rcu_gpt_cmp_ic)
692 CPPUNIT_TEST(EllenBinTree_rcu_gpt_cmp_ic_stat)
693 CPPUNIT_TEST( EllenBinTree_rcu_gpt_cmp_ic_stat_yield )
694 CPPUNIT_TEST( EllenBinTree_rcu_gpt_less_pool )
695 CPPUNIT_TEST(EllenBinTree_rcu_gpt_less_pool_ic_stat)
697 CPPUNIT_TEST(EllenBinTree_rcu_shb_less)
698 CPPUNIT_TEST(EllenBinTree_rcu_shb_cmp)
699 CPPUNIT_TEST(EllenBinTree_rcu_shb_less_stat)
700 CPPUNIT_TEST(EllenBinTree_rcu_shb_cmpless)
701 CPPUNIT_TEST(EllenBinTree_rcu_shb_less_ic)
702 CPPUNIT_TEST(EllenBinTree_rcu_shb_cmp_ic)
703 CPPUNIT_TEST(EllenBinTree_rcu_shb_cmp_ic_stat)
704 CPPUNIT_TEST( EllenBinTree_rcu_shb_cmp_ic_stat_yield )
705 CPPUNIT_TEST( EllenBinTree_rcu_shb_less_pool )
706 CPPUNIT_TEST(EllenBinTree_rcu_shb_less_pool_ic_stat)
708 CPPUNIT_TEST(EllenBinTree_rcu_sht_less)
709 CPPUNIT_TEST(EllenBinTree_rcu_sht_cmp)
710 CPPUNIT_TEST(EllenBinTree_rcu_sht_less_stat)
711 CPPUNIT_TEST(EllenBinTree_rcu_sht_cmpless)
712 CPPUNIT_TEST(EllenBinTree_rcu_sht_less_ic)
713 CPPUNIT_TEST(EllenBinTree_rcu_sht_cmp_ic)
714 CPPUNIT_TEST(EllenBinTree_rcu_sht_cmp_ic_stat)
715 CPPUNIT_TEST( EllenBinTree_rcu_sht_cmp_ic_stat_yield )
716 CPPUNIT_TEST( EllenBinTree_rcu_sht_less_pool )
717 CPPUNIT_TEST(EllenBinTree_rcu_sht_less_pool_ic_stat)
719 CPPUNIT_TEST_SUITE_END()
724 #endif // #ifndef CDSHDRTEST_ELLENBINTREE_MAP_H