movable guarded_ptr: SkipList
[libcds.git] / tests / test-hdr / map / hdr_skiplist_map.h
index 52cc8f4767df39534bfdb606b63156a7465b2807..1614529467e32cda7c214914cda28cde3e84e82d 100644 (file)
@@ -147,18 +147,21 @@ namespace map {
                 // extract/get
                 for ( int i = 0; i < nLimit; ++i ) {
                     int nKey = arrItem[i];
-                    CPPUNIT_ASSERT( m.get( gp, nKey ));
+                    gp = m.get( nKey );
+                    CPPUNIT_ASSERT( gp );
                     CPPUNIT_ASSERT( !gp.empty());
                     CPPUNIT_CHECK( gp->first == nKey );
                     CPPUNIT_CHECK( gp->second.m_val == nKey * 2 );
-                    gp.release();
-                    CPPUNIT_ASSERT( m.extract(gp, nKey));
+
+                    gp = m.extract( nKey );
+                    CPPUNIT_ASSERT( gp );
                     CPPUNIT_ASSERT( !gp.empty());
                     CPPUNIT_CHECK( gp->first == nKey );
                     CPPUNIT_CHECK( gp->second.m_val == nKey * 2 );
-                    gp.release();
-                    CPPUNIT_CHECK( !m.get( gp, nKey ));
-                    CPPUNIT_CHECK( !m.extract(gp, nKey));
+
+                    gp = m.get( nKey );
+                    CPPUNIT_CHECK( !gp );
+                    CPPUNIT_CHECK( !m.extract(nKey));
                     CPPUNIT_CHECK( gp.empty());
                 }
                 CPPUNIT_ASSERT( m.empty());
@@ -169,18 +172,21 @@ namespace map {
                 // extract_with/get_with
                 for ( int i = 0; i < nLimit; ++i ) {
                     int nKey = arrItem[i];
-                    CPPUNIT_ASSERT( m.get_with( gp, wrapped_item(nKey), wrapped_less() ));
+                    gp = m.get_with( wrapped_item( nKey ), wrapped_less());
+                    CPPUNIT_ASSERT( gp );
                     CPPUNIT_ASSERT( !gp.empty());
                     CPPUNIT_CHECK( gp->first == nKey );
                     CPPUNIT_CHECK( gp->second.m_val == nKey * 2 );
-                    gp.release();
-                    CPPUNIT_ASSERT( m.extract_with(gp, wrapped_item(nKey), wrapped_less()));
+                    
+                    gp = m.extract_with( wrapped_item( nKey ), wrapped_less());
+                    CPPUNIT_ASSERT( gp );
                     CPPUNIT_ASSERT( !gp.empty());
                     CPPUNIT_CHECK( gp->first == nKey );
                     CPPUNIT_CHECK( gp->second.m_val == nKey * 2 );
-                    gp.release();
-                    CPPUNIT_CHECK( !m.get_with( gp, wrapped_item(nKey), wrapped_less()));
-                    CPPUNIT_CHECK( !m.extract_with( gp, wrapped_item(nKey), wrapped_less()));
+
+                    gp = m.get_with( wrapped_item( nKey ), wrapped_less() );
+                    CPPUNIT_CHECK( !gp );
+                    CPPUNIT_CHECK( !m.extract_with( wrapped_item(nKey), wrapped_less()));
                     CPPUNIT_CHECK( gp.empty());
                 }
                 CPPUNIT_ASSERT( m.empty());
@@ -190,30 +196,30 @@ namespace map {
                     CPPUNIT_ASSERT( m.insert(arrItem[i], arrItem[i]*2) );
 
                 for ( int i = 0; i < nLimit; ++i ) {
-                    CPPUNIT_ASSERT( m.extract_min(gp));
+                    gp = m.extract_min();
+                    CPPUNIT_ASSERT( gp );
                     CPPUNIT_ASSERT( !gp.empty());
                     CPPUNIT_CHECK( gp->first == i );
                     CPPUNIT_CHECK( gp->second.m_val == i * 2 );
                     gp.release();
                     CPPUNIT_CHECK( gp.empty());
                 }
-                CPPUNIT_CHECK( !m.extract_min(gp));
-                CPPUNIT_CHECK( gp.empty());
-                CPPUNIT_ASSERT( m.empty());
+                CPPUNIT_CHECK( !m.extract_min());
 
                 // extract_max
                 for ( int i = 0; i < nLimit; ++i )
                     CPPUNIT_ASSERT( m.insert(arrItem[i], arrItem[i]*2) );
 
                 for ( int i = nLimit - 1; i >= 0; --i ) {
-                    CPPUNIT_ASSERT( m.extract_max(gp));
+                    gp = m.extract_max();
+                    CPPUNIT_ASSERT( gp );
                     CPPUNIT_ASSERT( !gp.empty());
                     CPPUNIT_CHECK( gp->first == i );
                     CPPUNIT_CHECK( gp->second.m_val == i * 2 );
                     gp.release();
                     CPPUNIT_CHECK( gp.empty());
                 }
-                CPPUNIT_CHECK( !m.extract_max(gp));
+                CPPUNIT_CHECK( m.extract_max());
                 CPPUNIT_CHECK( gp.empty());
                 CPPUNIT_ASSERT( m.empty());
             }
@@ -289,7 +295,6 @@ namespace map {
             CPPUNIT_ASSERT( it != m.end() );
             CPPUNIT_ASSERT( it->second.m_val == 120 * 5 );
 
-#       ifdef CDS_EMPLACE_SUPPORT
             // emplace test
             it = m.emplace( 151 ) ;  // key = 151,  val = 0
             CPPUNIT_ASSERT( it != m.end() );
@@ -323,7 +328,6 @@ namespace map {
             CPPUNIT_ASSERT( it != m.end() );
             CPPUNIT_ASSERT( it->first == 151 );
             CPPUNIT_ASSERT( it->second.m_val == 0 );
-#       endif
 
             m.clear();
             CPPUNIT_ASSERT( m.empty() );
@@ -396,55 +400,30 @@ namespace map {
         void SkipList_HP_michaelalloc_cmp_stat();
         void SkipList_HP_michaelalloc_cmpless_stat();
 
-        void SkipList_HRC_less();
-        void SkipList_HRC_cmp();
-        void SkipList_HRC_cmpless();
-        void SkipList_HRC_less_stat();
-        void SkipList_HRC_cmp_stat();
-        void SkipList_HRC_cmpless_stat();
-        void SkipList_HRC_xorshift_less();
-        void SkipList_HRC_xorshift_cmp();
-        void SkipList_HRC_xorshift_cmpless();
-        void SkipList_HRC_xorshift_less_stat();
-        void SkipList_HRC_xorshift_cmp_stat();
-        void SkipList_HRC_xorshift_cmpless_stat();
-        void SkipList_HRC_turbopas_less();
-        void SkipList_HRC_turbopas_cmp();
-        void SkipList_HRC_turbopas_cmpless();
-        void SkipList_HRC_turbopas_less_stat();
-        void SkipList_HRC_turbopas_cmp_stat();
-        void SkipList_HRC_turbopas_cmpless_stat();
-        void SkipList_HRC_michaelalloc_less();
-        void SkipList_HRC_michaelalloc_cmp();
-        void SkipList_HRC_michaelalloc_cmpless();
-        void SkipList_HRC_michaelalloc_less_stat();
-        void SkipList_HRC_michaelalloc_cmp_stat();
-        void SkipList_HRC_michaelalloc_cmpless_stat();
-
-        void SkipList_PTB_less();
-        void SkipList_PTB_cmp();
-        void SkipList_PTB_cmpless();
-        void SkipList_PTB_less_stat();
-        void SkipList_PTB_cmp_stat();
-        void SkipList_PTB_cmpless_stat();
-        void SkipList_PTB_xorshift_less();
-        void SkipList_PTB_xorshift_cmp();
-        void SkipList_PTB_xorshift_cmpless();
-        void SkipList_PTB_xorshift_less_stat();
-        void SkipList_PTB_xorshift_cmp_stat();
-        void SkipList_PTB_xorshift_cmpless_stat();
-        void SkipList_PTB_turbopas_less();
-        void SkipList_PTB_turbopas_cmp();
-        void SkipList_PTB_turbopas_cmpless();
-        void SkipList_PTB_turbopas_less_stat();
-        void SkipList_PTB_turbopas_cmp_stat();
-        void SkipList_PTB_turbopas_cmpless_stat();
-        void SkipList_PTB_michaelalloc_less();
-        void SkipList_PTB_michaelalloc_cmp();
-        void SkipList_PTB_michaelalloc_cmpless();
-        void SkipList_PTB_michaelalloc_less_stat();
-        void SkipList_PTB_michaelalloc_cmp_stat();
-        void SkipList_PTB_michaelalloc_cmpless_stat();
+        void SkipList_DHP_less();
+        void SkipList_DHP_cmp();
+        void SkipList_DHP_cmpless();
+        void SkipList_DHP_less_stat();
+        void SkipList_DHP_cmp_stat();
+        void SkipList_DHP_cmpless_stat();
+        void SkipList_DHP_xorshift_less();
+        void SkipList_DHP_xorshift_cmp();
+        void SkipList_DHP_xorshift_cmpless();
+        void SkipList_DHP_xorshift_less_stat();
+        void SkipList_DHP_xorshift_cmp_stat();
+        void SkipList_DHP_xorshift_cmpless_stat();
+        void SkipList_DHP_turbopas_less();
+        void SkipList_DHP_turbopas_cmp();
+        void SkipList_DHP_turbopas_cmpless();
+        void SkipList_DHP_turbopas_less_stat();
+        void SkipList_DHP_turbopas_cmp_stat();
+        void SkipList_DHP_turbopas_cmpless_stat();
+        void SkipList_DHP_michaelalloc_less();
+        void SkipList_DHP_michaelalloc_cmp();
+        void SkipList_DHP_michaelalloc_cmpless();
+        void SkipList_DHP_michaelalloc_less_stat();
+        void SkipList_DHP_michaelalloc_cmp_stat();
+        void SkipList_DHP_michaelalloc_cmpless_stat();
 
         void SkipList_NOGC_less();
         void SkipList_NOGC_cmp();
@@ -497,55 +476,30 @@ namespace map {
             CPPUNIT_TEST(SkipList_HP_michaelalloc_cmp_stat)
             CPPUNIT_TEST(SkipList_HP_michaelalloc_cmpless_stat)
 
-            CPPUNIT_TEST(SkipList_HRC_less)
-            CPPUNIT_TEST(SkipList_HRC_cmp)
-            CPPUNIT_TEST(SkipList_HRC_cmpless)
-            CPPUNIT_TEST(SkipList_HRC_less_stat)
-            CPPUNIT_TEST(SkipList_HRC_cmp_stat)
-            CPPUNIT_TEST(SkipList_HRC_cmpless_stat)
-            CPPUNIT_TEST(SkipList_HRC_xorshift_less)
-            CPPUNIT_TEST(SkipList_HRC_xorshift_cmp)
-            CPPUNIT_TEST(SkipList_HRC_xorshift_cmpless)
-            CPPUNIT_TEST(SkipList_HRC_xorshift_less_stat)
-            CPPUNIT_TEST(SkipList_HRC_xorshift_cmp_stat)
-            CPPUNIT_TEST(SkipList_HRC_xorshift_cmpless_stat)
-            CPPUNIT_TEST(SkipList_HRC_turbopas_less)
-            CPPUNIT_TEST(SkipList_HRC_turbopas_cmp)
-            CPPUNIT_TEST(SkipList_HRC_turbopas_cmpless)
-            CPPUNIT_TEST(SkipList_HRC_turbopas_less_stat)
-            CPPUNIT_TEST(SkipList_HRC_turbopas_cmp_stat)
-            CPPUNIT_TEST(SkipList_HRC_turbopas_cmpless_stat)
-            CPPUNIT_TEST(SkipList_HRC_michaelalloc_less)
-            CPPUNIT_TEST(SkipList_HRC_michaelalloc_cmp)
-            CPPUNIT_TEST(SkipList_HRC_michaelalloc_cmpless)
-            CPPUNIT_TEST(SkipList_HRC_michaelalloc_less_stat)
-            CPPUNIT_TEST(SkipList_HRC_michaelalloc_cmp_stat)
-            CPPUNIT_TEST(SkipList_HRC_michaelalloc_cmpless_stat)
-
-            CPPUNIT_TEST(SkipList_PTB_less)
-            CPPUNIT_TEST(SkipList_PTB_cmp)
-            CPPUNIT_TEST(SkipList_PTB_cmpless)
-            CPPUNIT_TEST(SkipList_PTB_less_stat)
-            CPPUNIT_TEST(SkipList_PTB_cmp_stat)
-            CPPUNIT_TEST(SkipList_PTB_cmpless_stat)
-            CPPUNIT_TEST(SkipList_PTB_xorshift_less)
-            CPPUNIT_TEST(SkipList_PTB_xorshift_cmp)
-            CPPUNIT_TEST(SkipList_PTB_xorshift_cmpless)
-            CPPUNIT_TEST(SkipList_PTB_xorshift_less_stat)
-            CPPUNIT_TEST(SkipList_PTB_xorshift_cmp_stat)
-            CPPUNIT_TEST(SkipList_PTB_xorshift_cmpless_stat)
-            CPPUNIT_TEST(SkipList_PTB_turbopas_less)
-            CPPUNIT_TEST(SkipList_PTB_turbopas_cmp)
-            CPPUNIT_TEST(SkipList_PTB_turbopas_cmpless)
-            CPPUNIT_TEST(SkipList_PTB_turbopas_less_stat)
-            CPPUNIT_TEST(SkipList_PTB_turbopas_cmp_stat)
-            CPPUNIT_TEST(SkipList_PTB_turbopas_cmpless_stat)
-            CPPUNIT_TEST(SkipList_PTB_michaelalloc_less)
-            CPPUNIT_TEST(SkipList_PTB_michaelalloc_cmp)
-            CPPUNIT_TEST(SkipList_PTB_michaelalloc_cmpless)
-            CPPUNIT_TEST(SkipList_PTB_michaelalloc_less_stat)
-            CPPUNIT_TEST(SkipList_PTB_michaelalloc_cmp_stat)
-            CPPUNIT_TEST(SkipList_PTB_michaelalloc_cmpless_stat)
+            CPPUNIT_TEST(SkipList_DHP_less)
+            CPPUNIT_TEST(SkipList_DHP_cmp)
+            CPPUNIT_TEST(SkipList_DHP_cmpless)
+            CPPUNIT_TEST(SkipList_DHP_less_stat)
+            CPPUNIT_TEST(SkipList_DHP_cmp_stat)
+            CPPUNIT_TEST(SkipList_DHP_cmpless_stat)
+            CPPUNIT_TEST(SkipList_DHP_xorshift_less)
+            CPPUNIT_TEST(SkipList_DHP_xorshift_cmp)
+            CPPUNIT_TEST(SkipList_DHP_xorshift_cmpless)
+            CPPUNIT_TEST(SkipList_DHP_xorshift_less_stat)
+            CPPUNIT_TEST(SkipList_DHP_xorshift_cmp_stat)
+            CPPUNIT_TEST(SkipList_DHP_xorshift_cmpless_stat)
+            CPPUNIT_TEST(SkipList_DHP_turbopas_less)
+            CPPUNIT_TEST(SkipList_DHP_turbopas_cmp)
+            CPPUNIT_TEST(SkipList_DHP_turbopas_cmpless)
+            CPPUNIT_TEST(SkipList_DHP_turbopas_less_stat)
+            CPPUNIT_TEST(SkipList_DHP_turbopas_cmp_stat)
+            CPPUNIT_TEST(SkipList_DHP_turbopas_cmpless_stat)
+            CPPUNIT_TEST(SkipList_DHP_michaelalloc_less)
+            CPPUNIT_TEST(SkipList_DHP_michaelalloc_cmp)
+            CPPUNIT_TEST(SkipList_DHP_michaelalloc_cmpless)
+            CPPUNIT_TEST(SkipList_DHP_michaelalloc_less_stat)
+            CPPUNIT_TEST(SkipList_DHP_michaelalloc_cmp_stat)
+            CPPUNIT_TEST(SkipList_DHP_michaelalloc_cmpless_stat)
 
             CPPUNIT_TEST(SkipList_NOGC_less)
             CPPUNIT_TEST(SkipList_NOGC_cmp)