Removed old tree unit test
[libcds.git] / tests / test-hdr / tree / hdr_bronson_avltree_map.h
diff --git a/tests/test-hdr/tree/hdr_bronson_avltree_map.h b/tests/test-hdr/tree/hdr_bronson_avltree_map.h
deleted file mode 100644 (file)
index c91518d..0000000
+++ /dev/null
@@ -1,706 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    Source code repo: http://github.com/khizmax/libcds/
-    Download: http://sourceforge.net/projects/libcds/files/
-    
-    Redistribution and use in source and binary forms, with or without
-    modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice, this
-      list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-      this list of conditions and the following disclaimer in the documentation
-      and/or other materials provided with the distribution.
-
-    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-    DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-    FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-    DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-    SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-    OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.     
-*/
-
-#ifndef CDSTEST_HDR_BRONSON_AVLTREE_MAP_H
-#define CDSTEST_HDR_BRONSON_AVLTREE_MAP_H
-
-#include "cppunit/cppunit_proxy.h"
-#include "size_check.h"
-#include <functional>   // ref
-#include <algorithm>
-
-namespace tree {
-    using misc::check_size;
-
-    class BronsonAVLTreeHdrTest : public CppUnitMini::TestCase
-    {
-    public:
-        typedef int     key_type;
-
-        struct stat_data {
-            size_t  nInsertFuncCall;
-            size_t  nEnsureExistFuncCall;
-            size_t  nEnsureNewFuncCall;
-            size_t  nEraseFuncCall;
-            size_t  nFindFuncCall;
-
-            stat_data()
-                : nInsertFuncCall( 0 )
-                , nEnsureExistFuncCall( 0 )
-                , nEnsureNewFuncCall( 0 )
-                , nEraseFuncCall( 0 )
-                , nFindFuncCall( 0 )
-            {}
-        };
-
-        struct value_type {
-            int         nVal;
-            stat_data   stat;
-
-            value_type()
-                : nVal(0)
-            {}
-
-            value_type( int v )
-                : nVal( v )
-            {}
-        };
-
-        struct compare {
-            int operator()( key_type k1, key_type k2 )
-            {
-                return k1 < k2 ? -1 : k1 > k2 ? 1 : 0;
-            }
-        };
-
-        struct wrapped_int {
-            int  nKey;
-
-            wrapped_int( int n )
-                : nKey( n )
-            {}
-        };
-
-        struct wrapped_less
-        {
-            bool operator()( wrapped_int const& w, int n ) const
-            {
-                return w.nKey < n;
-            }
-            bool operator()( int n, wrapped_int const& w ) const
-            {
-                return n < w.nKey;
-            }
-            template <typename T>
-            bool operator()( wrapped_int const& w, T const& v ) const
-            {
-                return w.nKey < v.nKey;
-            }
-            template <typename T>
-            bool operator()( T const& v, wrapped_int const& w ) const
-            {
-                return v.nKey < w.nKey;
-            }
-        };
-
-    protected:
-        static const size_t c_nItemCount = 10000;
-
-        struct find_functor
-        {
-            void operator()( key_type, value_type& v ) const
-            {
-                ++v.stat.nFindFuncCall;
-            }
-        };
-
-        template <typename Item>
-        struct copy_found
-        {
-            Item    m_found;
-
-            void operator()( key_type const&, Item& v )
-            {
-                m_found = v;
-            }
-
-            void operator()( Item& v )
-            {
-                m_found = v;
-            }
-        };
-
-        struct insert_functor
-        {
-            template <typename Item>
-            void operator()( key_type key, Item& i )
-            {
-                i.nVal = key * 100;
-                ++i.stat.nInsertFuncCall;
-            }
-        };
-
-        template <typename Q>
-        static void update_func( bool bNew, Q key, value_type& i )
-        {
-            i.nVal = key * 100;
-            if ( bNew )
-                ++i.stat.nEnsureNewFuncCall;
-            else
-                ++i.stat.nEnsureExistFuncCall;
-        }
-
-        struct update_functor
-        {
-            template <typename Q>
-            void operator()( bool bNew, Q key, value_type& i )
-            {
-                update_func( bNew, key, i );
-            }
-        };
-
-        struct check_functor
-        {
-            void operator()( size_t nLevel, size_t hLeft, size_t hRight )
-            {
-                CPPUNIT_MSG("Consistency violation: level=" << nLevel << ", hLeft=" << hLeft << ", hRight=" << hRight );
-            }
-        };
-
-    protected:
-        template <class Set>
-        void test_with( Set& s )
-        {
-            value_type itm;
-            int key;
-            typedef typename Set::exempt_ptr exempt_ptr;
-
-            // insert/find test
-            CPPUNIT_ASSERT( !s.contains( 10 ) );
-            CPPUNIT_ASSERT( s.insert( 10 ) );
-            CPPUNIT_ASSERT( !s.empty() );
-            CPPUNIT_ASSERT( check_size( s, 1 ) );
-            CPPUNIT_ASSERT( s.contains( 10 ) );
-
-            CPPUNIT_ASSERT( !s.insert( 10 ) );
-            CPPUNIT_ASSERT( !s.empty() );
-            CPPUNIT_ASSERT( check_size( s, 1 ) );
-
-            CPPUNIT_ASSERT( !s.contains( 20, std::less<key_type>() ) );
-            CPPUNIT_ASSERT( s.insert( 20, 25 ) );
-            CPPUNIT_ASSERT( !s.empty() );
-            CPPUNIT_ASSERT( check_size( s, 2 ) );
-            CPPUNIT_ASSERT( s.contains( 10, std::less<key_type>() ) );
-            CPPUNIT_ASSERT( s.contains( key = 20 ) );
-            CPPUNIT_ASSERT( s.find_with( key, std::less<key_type>(), find_functor() ) );
-            {
-                copy_found<value_type> f;
-                key = 20;
-                CPPUNIT_ASSERT( s.find( key, std::ref( f ) ) );
-                CPPUNIT_ASSERT( f.m_found.nVal == 25 );
-                CPPUNIT_ASSERT( f.m_found.stat.nFindFuncCall == 1 );
-            }
-            CPPUNIT_ASSERT( s.find( key, find_functor() ) );
-            {
-                copy_found<value_type> f;
-                key = 20;
-                CPPUNIT_ASSERT( s.find_with( key, std::less<key_type>(), std::ref( f ) ) );
-                CPPUNIT_ASSERT( f.m_found.nVal == 25 );
-                CPPUNIT_ASSERT( f.m_found.stat.nFindFuncCall == 2 );
-            }
-            CPPUNIT_ASSERT( s.find( 20, find_functor() ) );
-            {
-                copy_found<value_type> f;
-                CPPUNIT_ASSERT( s.find_with( 20, std::less<key_type>(), std::ref( f ) ) );
-                CPPUNIT_ASSERT( f.m_found.nVal == 25 );
-                CPPUNIT_ASSERT( f.m_found.stat.nFindFuncCall == 3 );
-            }
-
-            CPPUNIT_ASSERT( !s.empty() );
-            CPPUNIT_ASSERT( check_size( s, 2 ) );
-
-            CPPUNIT_ASSERT( !s.contains( 25 ) );
-            CPPUNIT_ASSERT( s.insert_with( 25, insert_functor() ) );
-            CPPUNIT_ASSERT( !s.empty() );
-            CPPUNIT_ASSERT( check_size( s, 3 ) );
-            {
-                copy_found<value_type> f;
-                key = 25;
-                CPPUNIT_ASSERT( s.find( key, std::ref( f ) ) );
-                CPPUNIT_ASSERT( f.m_found.nVal == 2500 );
-                CPPUNIT_ASSERT( f.m_found.stat.nInsertFuncCall == 1 );
-            }
-
-            // update test
-            key = 10;
-            {
-                copy_found<value_type> f;
-                CPPUNIT_ASSERT( s.find( key, std::ref( f ) ) );
-                CPPUNIT_ASSERT( f.m_found.nVal == 0 );
-                CPPUNIT_ASSERT( f.m_found.stat.nEnsureExistFuncCall == 0 );
-                CPPUNIT_ASSERT( f.m_found.stat.nEnsureNewFuncCall == 0 );
-            }
-            std::pair<bool, bool> updateResult = s.update( key, update_functor() );
-            CPPUNIT_ASSERT( updateResult.first && !updateResult.second );
-            CPPUNIT_ASSERT( !s.empty() );
-            CPPUNIT_ASSERT( check_size( s, 3 ) );
-            {
-                copy_found<value_type> f;
-                CPPUNIT_ASSERT( s.find( key, std::ref( f ) ) );
-                CPPUNIT_ASSERT( f.m_found.nVal == 1000 );
-                CPPUNIT_ASSERT( f.m_found.stat.nEnsureExistFuncCall == 1 );
-                CPPUNIT_ASSERT( f.m_found.stat.nEnsureNewFuncCall == 0 );
-            }
-
-            updateResult = s.update( 13, []( bool /*bNew*/, key_type key, value_type& v )
-                {
-                    v.nVal = key * 1000;
-                    ++v.stat.nEnsureNewFuncCall;
-                });
-            CPPUNIT_ASSERT( updateResult.first && updateResult.second );
-            CPPUNIT_ASSERT( !s.empty() );
-            CPPUNIT_ASSERT( check_size( s, 4 ) );
-            {
-                copy_found<value_type> f;
-                key = 13;
-                CPPUNIT_ASSERT( s.find( key, std::ref( f ) ) );
-                CPPUNIT_ASSERT( f.m_found.nVal == 13000 );
-                CPPUNIT_ASSERT( f.m_found.stat.nEnsureExistFuncCall == 0 );
-                CPPUNIT_ASSERT( f.m_found.stat.nEnsureNewFuncCall == 1 );
-            }
-
-            // erase test
-            CPPUNIT_ASSERT( s.erase( 13 ) );
-            CPPUNIT_ASSERT( !s.contains( 13 ) );
-            CPPUNIT_ASSERT( !s.empty() );
-            CPPUNIT_ASSERT( check_size( s, 3 ) );
-            CPPUNIT_ASSERT( !s.erase( 13 ) );
-            CPPUNIT_ASSERT( !s.empty() );
-            CPPUNIT_ASSERT( check_size( s, 3 ) );
-
-            CPPUNIT_ASSERT( s.contains( 10 ) );
-            CPPUNIT_ASSERT( s.erase_with( 10, std::less<key_type>() ) );
-            CPPUNIT_ASSERT( !s.contains( 10 ) );
-            CPPUNIT_ASSERT( !s.empty() );
-            CPPUNIT_ASSERT( check_size( s, 2 ) );
-            CPPUNIT_ASSERT( !s.erase_with( 10, std::less<key_type>() ) );
-            CPPUNIT_ASSERT( !s.empty() );
-            CPPUNIT_ASSERT( check_size( s, 2 ) );
-
-            CPPUNIT_ASSERT( s.contains( 20 ) );
-            {
-                copy_found<value_type> f;
-                CPPUNIT_ASSERT( s.erase( 20, std::ref( f ) ) );
-                CPPUNIT_ASSERT( f.m_found.nVal == 25 );
-
-                CPPUNIT_ASSERT( s.insert( 235, 2350 ) );
-                CPPUNIT_ASSERT( s.erase_with( 235, std::less<key_type>(), std::ref( f ) ) );
-                CPPUNIT_ASSERT( f.m_found.nVal == 2350 );
-            }
-            CPPUNIT_ASSERT( !s.contains( 20 ) );
-            CPPUNIT_ASSERT( !s.empty() );
-            CPPUNIT_ASSERT( check_size( s, 1 ) );
-
-            s.clear();
-            CPPUNIT_ASSERT( s.empty() );
-            CPPUNIT_ASSERT( check_size( s, 0 ) );
-
-            // emplace test
-            CPPUNIT_ASSERT( s.emplace( 151 ) );  // key = 151, val=0
-            CPPUNIT_ASSERT( s.emplace( 174, 471 ) );    // key = 174, val = 471
-            CPPUNIT_ASSERT( !s.empty() );
-            CPPUNIT_ASSERT( check_size( s, 2 ) );
-
-            CPPUNIT_ASSERT( s.contains( 151 ) );
-            CPPUNIT_ASSERT( s.contains( 174, std::less<key_type>() ) );
-            CPPUNIT_ASSERT( !s.contains( 190 ) );
-
-            {
-                copy_found<value_type> f;
-                key = 151;
-                CPPUNIT_ASSERT( s.find( key, std::ref( f )));
-                CPPUNIT_ASSERT( f.m_found.nVal == 0 );
-
-                key = 174;
-                CPPUNIT_ASSERT( s.find( key, std::ref( f )));
-                CPPUNIT_ASSERT( f.m_found.nVal == 471 );
-            }
-
-            s.clear();
-            CPPUNIT_ASSERT( s.empty() );
-            CPPUNIT_ASSERT( check_size( s, 0 ) );
-
-            const int c_nStep = 10;
-            int keys[1000];
-            for ( key_type i = 0; i < static_cast<key_type>(sizeof(keys) / sizeof(keys[0])); ++i )
-                keys[i] = i;
-            shuffle( keys, keys + sizeof(keys) / sizeof(keys[0]));
-
-            size_t nCount = 1;
-            int nPrev;
-            key_type keyPrev;
-            exempt_ptr xp;
-
-            // extract_min
-            for ( int i = 0; i < static_cast<int>(sizeof(keys) / sizeof(keys[0])); ++i )
-                CPPUNIT_ASSERT( s.emplace( keys[i], keys[i] * c_nStep ));
-            CPPUNIT_CHECK( s.check_consistency( check_functor() ));
-
-            xp = s.extract_min();
-            CPPUNIT_ASSERT( xp );
-            nPrev = xp->nVal;
-            CPPUNIT_CHECK_EX( nPrev == 0, "Expected=0 real=" << nPrev );
-            while ( !s.empty() ) {
-                xp = s.extract_min();
-                CPPUNIT_ASSERT( xp );
-                CPPUNIT_CHECK_EX( nPrev + c_nStep == xp->nVal, "Expected=" << nPrev + c_nStep << " real=" << xp->nVal );
-                nPrev = xp->nVal;
-                ++nCount;
-            }
-            CPPUNIT_CHECK( nCount == sizeof(keys) / sizeof(keys[0]));
-
-            // extract_min<Func>
-            for ( int i = 0; i < static_cast<int>(sizeof(keys) / sizeof(keys[0])); ++i )
-                CPPUNIT_ASSERT( s.insert( keys[i], keys[i] * c_nStep ));
-            CPPUNIT_CHECK( s.check_consistency( check_functor() ));
-
-            nCount = 1;
-            xp = s.extract_min( [&keyPrev]( key_type k ){ keyPrev = k; });
-            CPPUNIT_ASSERT( xp );
-            nPrev = xp->nVal;
-            CPPUNIT_CHECK_EX( keyPrev == 0, "Expected=0 real=" << keyPrev );
-            CPPUNIT_CHECK_EX( nPrev == 0, "Expected=0 real=" << nPrev );
-            while ( !s.empty() ) {
-                xp = s.extract_min( [&key](key_type k){ key = k; } );
-                CPPUNIT_ASSERT( xp );
-                CPPUNIT_CHECK_EX( key == keyPrev + 1, "Expected=" << keyPrev + 1 << " real=" << key );
-                CPPUNIT_CHECK_EX( nPrev + c_nStep == xp->nVal, "Expected=" << nPrev + c_nStep << " real=" << xp->nVal );
-                nPrev = xp->nVal;
-                ++keyPrev;
-                ++nCount;
-            }
-            CPPUNIT_CHECK( nCount == sizeof(keys) / sizeof(keys[0]));
-
-            // extract_min_key
-            for ( int i = 0; i < static_cast<int>(sizeof(keys) / sizeof(keys[0])); ++i )
-                CPPUNIT_ASSERT( s.insert( keys[i], keys[i] * c_nStep ));
-            CPPUNIT_CHECK( s.check_consistency( check_functor() ));
-
-            nCount = 1;
-            xp = s.extract_min_key( keyPrev );
-            CPPUNIT_ASSERT( xp );
-            nPrev = xp->nVal;
-            CPPUNIT_CHECK_EX( keyPrev == 0, "Expected=0 real=" << keyPrev );
-            CPPUNIT_CHECK_EX( nPrev == 0, "Expected=0 real=" << nPrev );
-            while ( !s.empty() ) {
-                xp = s.extract_min_key( key );
-                CPPUNIT_ASSERT( xp );
-                CPPUNIT_CHECK_EX( key == keyPrev + 1, "Expected=" << keyPrev + 1 << " real=" << key );
-                CPPUNIT_CHECK_EX( nPrev + c_nStep == xp->nVal, "Expected=" << nPrev + c_nStep << " real=" << xp->nVal );
-                nPrev = xp->nVal;
-                ++keyPrev;
-                ++nCount;
-            }
-            CPPUNIT_CHECK( nCount == sizeof(keys) / sizeof(keys[0]));
-
-            // extract_max
-            for ( int i = 0; i < static_cast<int>(sizeof(keys) / sizeof(keys[0])); ++i )
-                CPPUNIT_ASSERT( s.emplace( keys[i], keys[i] * c_nStep ));
-            CPPUNIT_CHECK( s.check_consistency( check_functor() ));
-
-            nCount = 1;
-            xp = s.extract_max();
-            CPPUNIT_ASSERT( xp );
-            nPrev = xp->nVal;
-            CPPUNIT_CHECK_EX( nPrev == c_nStep * (sizeof(keys) / sizeof(keys[0]) - 1),
-                "Expected=" << c_nStep * (sizeof(keys) / sizeof(keys[0]) - 1) << " real=" << nPrev );
-            while ( !s.empty() ) {
-                xp = s.extract_max();
-                CPPUNIT_ASSERT( xp );
-                CPPUNIT_CHECK_EX( nPrev - c_nStep == xp->nVal, "Expected=" << nPrev - c_nStep << " real=" << xp->nVal );
-                nPrev = xp->nVal;
-                ++nCount;
-            }
-            CPPUNIT_CHECK( nCount == sizeof(keys) / sizeof(keys[0]));
-
-            // extract_max<Func>
-            for ( int i = 0; i < static_cast<int>(sizeof(keys) / sizeof(keys[0])); ++i )
-                CPPUNIT_ASSERT( s.emplace( keys[i], keys[i] * c_nStep ));
-            CPPUNIT_CHECK( s.check_consistency( check_functor() ));
-
-            nCount = 1;
-            xp = s.extract_max( [&keyPrev]( key_type k ){ keyPrev = k; });
-            CPPUNIT_ASSERT( xp );
-            nPrev = xp->nVal;
-            CPPUNIT_CHECK_EX( keyPrev == sizeof(keys) / sizeof(keys[0]) - 1,
-                "Expected=" << sizeof(keys) / sizeof(keys[0]) - 1 << " real=" << keyPrev );
-            CPPUNIT_CHECK_EX( nPrev == c_nStep * (sizeof(keys) / sizeof(keys[0]) - 1),
-                "Expected=" << c_nStep * (sizeof(keys) / sizeof(keys[0]) - 1) << " real=" << nPrev );
-            while ( !s.empty() ) {
-                xp = s.extract_max( [&key](key_type k){ key = k; });
-                CPPUNIT_ASSERT( xp );
-                CPPUNIT_CHECK_EX( key == keyPrev - 1, "Expected=" << keyPrev - 1 << " real=" << key );
-                CPPUNIT_CHECK_EX( nPrev - c_nStep == xp->nVal, "Expected=" << nPrev - c_nStep << " real=" << xp->nVal );
-                nPrev = xp->nVal;
-                --keyPrev;
-                ++nCount;
-            }
-            CPPUNIT_CHECK( nCount == sizeof(keys) / sizeof(keys[0]));
-
-            // extract_max_key
-            for ( int i = 0; i < static_cast<int>(sizeof(keys) / sizeof(keys[0])); ++i )
-                CPPUNIT_ASSERT( s.emplace( keys[i], keys[i] * c_nStep ));
-            CPPUNIT_CHECK( s.check_consistency( check_functor() ));
-
-            nCount = 1;
-            xp = s.extract_max_key( keyPrev );
-            CPPUNIT_ASSERT( xp );
-            nPrev = xp->nVal;
-            CPPUNIT_CHECK_EX( keyPrev == sizeof(keys) / sizeof(keys[0]) - 1,
-                "Expected=" << sizeof(keys) / sizeof(keys[0]) - 1 << " real=" << keyPrev );
-            CPPUNIT_CHECK_EX( nPrev == c_nStep * (sizeof(keys) / sizeof(keys[0]) - 1),
-                "Expected=" << c_nStep * (sizeof(keys) / sizeof(keys[0]) - 1) << " real=" << nPrev );
-            while ( !s.empty() ) {
-                xp = s.extract_max_key( key );
-                CPPUNIT_ASSERT( xp );
-                CPPUNIT_CHECK_EX( key == keyPrev - 1, "Expected=" << keyPrev - 1 << " real=" << key );
-                CPPUNIT_CHECK_EX( nPrev - c_nStep == xp->nVal, "Expected=" << nPrev - c_nStep << " real=" << xp->nVal );
-                nPrev = xp->nVal;
-                --keyPrev;
-                ++nCount;
-            }
-            CPPUNIT_CHECK( nCount == sizeof(keys) / sizeof(keys[0]));
-
-            // extract
-            for ( int i = 0; i < static_cast<int>(sizeof(keys) / sizeof(keys[0])); ++i )
-                CPPUNIT_ASSERT( s.emplace( keys[i], keys[i] * c_nStep ));
-            CPPUNIT_CHECK( s.check_consistency( check_functor() ));
-
-            for ( int i = 0; i < static_cast<int>(sizeof( keys ) / sizeof( keys[0] )); ++i ) {
-                xp = s.extract(keys[i]);
-                CPPUNIT_CHECK_EX( xp->nVal == keys[i] * c_nStep, "Expected value=" << keys[i] * c_nStep << " real=" << xp->nVal );
-            }
-            CPPUNIT_ASSERT(s.empty());
-
-
-            // extract_with
-            for ( int i = 0; i < static_cast<int>(sizeof(keys) / sizeof(keys[0])); ++i )
-                CPPUNIT_ASSERT( s.emplace( keys[i], keys[i] * c_nStep ));
-            CPPUNIT_CHECK( s.check_consistency( check_functor() ));
-
-            for ( int i = 0; i < static_cast<int>(sizeof( keys ) / sizeof( keys[0] )); ++i ) {
-                xp = s.extract_with( wrapped_int(keys[i]), wrapped_less());
-                CPPUNIT_CHECK_EX( xp->nVal == keys[i] * c_nStep, "Expected value=" << keys[i] * c_nStep << " real=" << xp->nVal );
-            }
-            CPPUNIT_ASSERT(s.empty());
-        }
-
-        template <class Set, class PrintStat>
-        void test()
-        {
-            typedef Set set_type;
-
-            set_type s;
-
-            test_with( s );
-
-            s.clear();
-            CPPUNIT_ASSERT( s.empty() );
-            CPPUNIT_ASSERT( check_size( s, 0 ) );
-
-            PrintStat()(s);
-        }
-
-        void BronsonAVLTree_rcu_gpi_less();
-        void BronsonAVLTree_rcu_gpi_less_stat();
-        void BronsonAVLTree_rcu_gpi_cmp();
-        void BronsonAVLTree_rcu_gpi_cmp_stat();
-        void BronsonAVLTree_rcu_gpi_cmpless();
-        void BronsonAVLTree_rcu_gpi_less_ic();
-        void BronsonAVLTree_rcu_gpi_cmp_ic();
-        void BronsonAVLTree_rcu_gpi_cmp_ic_stat();
-        void BronsonAVLTree_rcu_gpi_cmp_ic_stat_yield();
-        void BronsonAVLTree_rcu_gpi_less_relaxed_insert();
-        void BronsonAVLTree_rcu_gpi_less_relaxed_insert_stat();
-        void BronsonAVLTree_rcu_gpi_pool_monitor_less();
-        void BronsonAVLTree_rcu_gpi_pool_monitor_less_stat();
-        void BronsonAVLTree_rcu_gpi_pool_monitor_cmp_ic_stat();
-        void BronsonAVLTree_rcu_gpi_pool_monitor_cmp_ic_stat_yield();
-        void BronsonAVLTree_rcu_gpi_pool_monitor_less_relaxed_insert();
-        void BronsonAVLTree_rcu_gpi_pool_monitor_less_relaxed_insert_stat();
-
-        void BronsonAVLTree_rcu_gpb_less();
-        void BronsonAVLTree_rcu_gpb_less_stat();
-        void BronsonAVLTree_rcu_gpb_cmp();
-        void BronsonAVLTree_rcu_gpb_cmp_stat();
-        void BronsonAVLTree_rcu_gpb_cmpless();
-        void BronsonAVLTree_rcu_gpb_less_ic();
-        void BronsonAVLTree_rcu_gpb_cmp_ic();
-        void BronsonAVLTree_rcu_gpb_cmp_ic_stat();
-        void BronsonAVLTree_rcu_gpb_cmp_ic_stat_yield();
-        void BronsonAVLTree_rcu_gpb_less_relaxed_insert();
-        void BronsonAVLTree_rcu_gpb_less_relaxed_insert_stat();
-        void BronsonAVLTree_rcu_gpb_pool_monitor_less();
-        void BronsonAVLTree_rcu_gpb_pool_monitor_less_stat();
-        void BronsonAVLTree_rcu_gpb_pool_monitor_cmp_ic_stat();
-        void BronsonAVLTree_rcu_gpb_pool_monitor_cmp_ic_stat_yield();
-        void BronsonAVLTree_rcu_gpb_pool_monitor_less_relaxed_insert();
-        void BronsonAVLTree_rcu_gpb_pool_monitor_less_relaxed_insert_stat();
-
-        void BronsonAVLTree_rcu_gpt_less();
-        void BronsonAVLTree_rcu_gpt_less_stat();
-        void BronsonAVLTree_rcu_gpt_cmp();
-        void BronsonAVLTree_rcu_gpt_cmp_stat();
-        void BronsonAVLTree_rcu_gpt_cmpless();
-        void BronsonAVLTree_rcu_gpt_less_ic();
-        void BronsonAVLTree_rcu_gpt_cmp_ic();
-        void BronsonAVLTree_rcu_gpt_cmp_ic_stat();
-        void BronsonAVLTree_rcu_gpt_cmp_ic_stat_yield();
-        void BronsonAVLTree_rcu_gpt_less_relaxed_insert();
-        void BronsonAVLTree_rcu_gpt_less_relaxed_insert_stat();
-        void BronsonAVLTree_rcu_gpt_pool_monitor_less();
-        void BronsonAVLTree_rcu_gpt_pool_monitor_less_stat();
-        void BronsonAVLTree_rcu_gpt_pool_monitor_cmp_ic_stat();
-        void BronsonAVLTree_rcu_gpt_pool_monitor_cmp_ic_stat_yield();
-        void BronsonAVLTree_rcu_gpt_pool_monitor_less_relaxed_insert();
-        void BronsonAVLTree_rcu_gpt_pool_monitor_less_relaxed_insert_stat();
-
-        void BronsonAVLTree_rcu_shb_less();
-        void BronsonAVLTree_rcu_shb_less_stat();
-        void BronsonAVLTree_rcu_shb_cmp();
-        void BronsonAVLTree_rcu_shb_cmp_stat();
-        void BronsonAVLTree_rcu_shb_cmpless();
-        void BronsonAVLTree_rcu_shb_less_ic();
-        void BronsonAVLTree_rcu_shb_cmp_ic();
-        void BronsonAVLTree_rcu_shb_cmp_ic_stat();
-        void BronsonAVLTree_rcu_shb_cmp_ic_stat_yield();
-        void BronsonAVLTree_rcu_shb_less_relaxed_insert();
-        void BronsonAVLTree_rcu_shb_less_relaxed_insert_stat();
-        void BronsonAVLTree_rcu_shb_pool_monitor_less();
-        void BronsonAVLTree_rcu_shb_pool_monitor_less_stat();
-        void BronsonAVLTree_rcu_shb_pool_monitor_cmp_ic_stat();
-        void BronsonAVLTree_rcu_shb_pool_monitor_cmp_ic_stat_yield();
-        void BronsonAVLTree_rcu_shb_pool_monitor_less_relaxed_insert();
-        void BronsonAVLTree_rcu_shb_pool_monitor_less_relaxed_insert_stat();
-
-        void BronsonAVLTree_rcu_sht_less();
-        void BronsonAVLTree_rcu_sht_less_stat();
-        void BronsonAVLTree_rcu_sht_cmp();
-        void BronsonAVLTree_rcu_sht_cmp_stat();
-        void BronsonAVLTree_rcu_sht_cmpless();
-        void BronsonAVLTree_rcu_sht_less_ic();
-        void BronsonAVLTree_rcu_sht_cmp_ic();
-        void BronsonAVLTree_rcu_sht_cmp_ic_stat();
-        void BronsonAVLTree_rcu_sht_cmp_ic_stat_yield();
-        void BronsonAVLTree_rcu_sht_less_relaxed_insert();
-        void BronsonAVLTree_rcu_sht_less_relaxed_insert_stat();
-        void BronsonAVLTree_rcu_sht_pool_monitor_less();
-        void BronsonAVLTree_rcu_sht_pool_monitor_less_stat();
-        void BronsonAVLTree_rcu_sht_pool_monitor_cmp_ic_stat();
-        void BronsonAVLTree_rcu_sht_pool_monitor_cmp_ic_stat_yield();
-        void BronsonAVLTree_rcu_sht_pool_monitor_less_relaxed_insert();
-        void BronsonAVLTree_rcu_sht_pool_monitor_less_relaxed_insert_stat();
-
-        CPPUNIT_TEST_SUITE( BronsonAVLTreeHdrTest )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_less )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_less_stat )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_cmp )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_cmp_stat )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_cmpless )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_less_ic )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_cmp_ic )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_cmp_ic_stat )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_cmp_ic_stat_yield )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_less_relaxed_insert )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_less_relaxed_insert_stat )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_pool_monitor_less )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_pool_monitor_less_stat )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_pool_monitor_cmp_ic_stat )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_pool_monitor_cmp_ic_stat_yield )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_pool_monitor_less_relaxed_insert )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_pool_monitor_less_relaxed_insert_stat )
-
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpb_less )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpb_less_stat )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpb_cmp )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpb_cmp_stat )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpb_cmpless )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpb_less_ic )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpb_cmp_ic )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpb_cmp_ic_stat )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpb_cmp_ic_stat_yield )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpb_less_relaxed_insert )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpb_less_relaxed_insert_stat )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpb_pool_monitor_less )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpb_pool_monitor_less_stat )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpb_pool_monitor_cmp_ic_stat )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpb_pool_monitor_cmp_ic_stat_yield )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpb_pool_monitor_less_relaxed_insert )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpb_pool_monitor_less_relaxed_insert_stat )
-
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_less )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_less_stat )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_cmp )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_cmp_stat )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_cmpless )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_less_ic )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_cmp_ic )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_cmp_ic_stat )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_cmp_ic_stat_yield )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_less_relaxed_insert )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_less_relaxed_insert_stat )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_pool_monitor_less )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_pool_monitor_less_stat )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_pool_monitor_cmp_ic_stat )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_pool_monitor_cmp_ic_stat_yield )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_pool_monitor_less_relaxed_insert )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_pool_monitor_less_relaxed_insert_stat )
-
-            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_less )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_less_stat )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_cmp )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_cmp_stat )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_cmpless )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_less_ic )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_cmp_ic )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_cmp_ic_stat )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_cmp_ic_stat_yield )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_less_relaxed_insert )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_less_relaxed_insert_stat )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_pool_monitor_less )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_pool_monitor_less_stat )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_pool_monitor_cmp_ic_stat )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_pool_monitor_cmp_ic_stat_yield )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_pool_monitor_less_relaxed_insert )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_pool_monitor_less_relaxed_insert_stat )
-
-            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_less )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_less_stat )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_cmp )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_cmp_stat )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_cmpless )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_less_ic )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_cmp_ic )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_cmp_ic_stat )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_cmp_ic_stat_yield )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_less_relaxed_insert )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_less_relaxed_insert_stat )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_pool_monitor_less )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_pool_monitor_less_stat )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_pool_monitor_cmp_ic_stat )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_pool_monitor_cmp_ic_stat_yield )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_pool_monitor_less_relaxed_insert )
-            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_pool_monitor_less_relaxed_insert_stat )
-
-        CPPUNIT_TEST_SUITE_END()
-    };
-} // namespace tree
-
-#endif // #ifndef CDSTEST_HDR_BRONSON_AVLTREE_MAP_H