MichaelList, LazyList, MichaelMap:
[libcds.git] / tests / test-hdr / list / hdr_intrusive_michael.h
index de0183416e6698320d7b920f4b1bd8caba4dfe80..05afb3fcd32e235d9360ac973df1048988ae3f98 100644 (file)
@@ -16,15 +16,15 @@ namespace ordlist {
 
         struct stat {
             int nDisposeCount;
-            int nEnsureExistsCall;
-            int nEnsureNewCall;
+            int nUpdateExistsCall;
+            int nUpdateNewCall;
             int nFindCall;
             int nEraseCall;
 
             stat()
                 : nDisposeCount(0)
-                , nEnsureExistsCall(0)
-                , nEnsureNewCall(0)
+                , nUpdateExistsCall(0)
+                , nUpdateNewCall(0)
                 , nFindCall(0)
                 , nEraseCall(0)
             {}
@@ -173,15 +173,15 @@ namespace ordlist {
             }
         };
 
-        struct ensure_functor
+        struct update_functor
         {
             template <typename T>
             void operator ()(bool bNew, T& item, T& /*val*/ )
             {
                 if ( bNew )
-                    ++item.s.nEnsureNewCall;
+                    ++item.s.nUpdateNewCall;
                 else
-                    ++item.s.nEnsureExistsCall;
+                    ++item.s.nUpdateExistsCall;
             }
         };
 
@@ -216,14 +216,14 @@ namespace ordlist {
                 CPPUNIT_ASSERT( l.empty() );
 
                 CPPUNIT_ASSERT( l.insert( v1 ))     ;   // true
-                CPPUNIT_ASSERT( l.find( v1.key() ));
+                CPPUNIT_ASSERT( l.contains( v1.key() ));
 
                 CPPUNIT_ASSERT( v1.s.nFindCall == 0 );
                 CPPUNIT_ASSERT( l.find( v1.key(), find_functor() ));
                 CPPUNIT_ASSERT( v1.s.nFindCall == 1 );
 
-                CPPUNIT_ASSERT( !l.find( v2.key() ));
-                CPPUNIT_ASSERT( !l.find_with( v3.key(), less<value_type>() ));
+                CPPUNIT_ASSERT( !l.contains( v2.key() ));
+                CPPUNIT_ASSERT( !l.contains( v3.key(), less<value_type>() ));
                 CPPUNIT_ASSERT( !l.empty() );
 
                 CPPUNIT_ASSERT( !l.insert( v1 ))    ;   // assertion "is_empty" is not raised since pNext is nullptr
@@ -233,56 +233,56 @@ namespace ordlist {
                     CPPUNIT_ASSERT( !l.insert( v )) ;   // false
                 }
 
-                std::pair<bool, bool> ret = l.ensure( v2, ensure_functor() );
+                std::pair<bool, bool> ret = l.update( v2, update_functor() );
                 CPPUNIT_ASSERT( ret.first );
                 CPPUNIT_ASSERT( ret.second );
-                CPPUNIT_ASSERT( v2.s.nEnsureNewCall == 1 );
-                CPPUNIT_ASSERT( v2.s.nEnsureExistsCall == 0 );
+                CPPUNIT_ASSERT( v2.s.nUpdateNewCall == 1 );
+                CPPUNIT_ASSERT( v2.s.nUpdateExistsCall == 0 );
 
                 //CPPUNIT_ASSERT( !l.insert( v2 ))    ;   // assertion "is_empty"
 
-                CPPUNIT_ASSERT( l.find_with( v1.key(), less<value_type>() )) ;   // true
+                CPPUNIT_ASSERT( l.contains( v1.key(), less<value_type>() )) ;   // true
 
                 CPPUNIT_ASSERT( v1.s.nFindCall == 1 );
                 CPPUNIT_ASSERT( l.find_with( v1.key(), less<value_type>(), find_functor() ));
                 CPPUNIT_ASSERT( v1.s.nFindCall == 2 );
 
-                CPPUNIT_ASSERT( l.find( v2.key() ));
+                CPPUNIT_ASSERT( l.contains( v2.key() ));
 
                 CPPUNIT_ASSERT( v2.s.nFindCall == 0 );
                 CPPUNIT_ASSERT( l.find( v2.key(), find_functor() ));
                 CPPUNIT_ASSERT( v2.s.nFindCall == 1 );
 
-                CPPUNIT_ASSERT( !l.find( v3.key() ));
+                CPPUNIT_ASSERT( !l.contains( v3.key() ));
 
                 {
-                    CPPUNIT_ASSERT( v2.s.nEnsureExistsCall == 0 );
-                    CPPUNIT_ASSERT( v2.s.nEnsureNewCall == 1 );
+                    CPPUNIT_ASSERT( v2.s.nUpdateExistsCall == 0 );
+                    CPPUNIT_ASSERT( v2.s.nUpdateNewCall == 1 );
 
                     value_type v( v2 );
-                    ret = l.ensure( v, ensure_functor() );
+                    ret = l.update( v, update_functor() );
 
                     CPPUNIT_ASSERT( ret.first );
                     CPPUNIT_ASSERT( !ret.second );
-                    CPPUNIT_ASSERT( v2.s.nEnsureExistsCall == 1 );
-                    CPPUNIT_ASSERT( v2.s.nEnsureNewCall == 1 );
-                    CPPUNIT_ASSERT( v.s.nEnsureExistsCall == 0 );
-                    CPPUNIT_ASSERT( v.s.nEnsureNewCall == 0 );
+                    CPPUNIT_ASSERT( v2.s.nUpdateExistsCall == 1 );
+                    CPPUNIT_ASSERT( v2.s.nUpdateNewCall == 1 );
+                    CPPUNIT_ASSERT( v.s.nUpdateExistsCall == 0 );
+                    CPPUNIT_ASSERT( v.s.nUpdateNewCall == 0 );
                 }
 
                 CPPUNIT_ASSERT( !l.empty() );
 
                 CPPUNIT_ASSERT( l.insert( v3 ))     ;   // true
-                CPPUNIT_ASSERT( l.find( v3.key() ));
+                CPPUNIT_ASSERT( l.contains( v3.key() ));
 
                 CPPUNIT_ASSERT( v3.s.nFindCall == 0 );
                 CPPUNIT_ASSERT( l.find( v3.key(), find_functor() ));
                 CPPUNIT_ASSERT( v3.s.nFindCall == 1 );
 
                 CPPUNIT_ASSERT( l.unlink( v2 ) );
-                CPPUNIT_ASSERT( l.find( v1.key() )) ;   // true
-                CPPUNIT_ASSERT( !l.find( v2.key() )) ;   // true
-                CPPUNIT_ASSERT( l.find( v3.key() )) ;   // true
+                CPPUNIT_ASSERT( l.contains( v1.key() )) ;   // true
+                CPPUNIT_ASSERT( !l.contains( v2.key() )) ;   // true
+                CPPUNIT_ASSERT( l.contains( v3.key() )) ;   // true
                 CPPUNIT_ASSERT( !l.empty() );
                 CPPUNIT_ASSERT( !l.unlink( v2 ) );
 
@@ -294,15 +294,15 @@ namespace ordlist {
 
                 CPPUNIT_ASSERT( l.unlink( v1 ) );
                 CPPUNIT_ASSERT( !l.unlink( v1 ) );
-                CPPUNIT_ASSERT( !l.find( v1.key() ));
-                CPPUNIT_ASSERT( !l.find( v2.key() ));
-                CPPUNIT_ASSERT( l.find( v3.key() ));
+                CPPUNIT_ASSERT( !l.contains( v1.key() ));
+                CPPUNIT_ASSERT( !l.contains( v2.key() ));
+                CPPUNIT_ASSERT( l.contains( v3.key() ));
                 CPPUNIT_ASSERT( !l.empty() );
                 CPPUNIT_ASSERT( !l.unlink( v1 ) );
                 CPPUNIT_ASSERT( !l.unlink( v2 ) );
 
                 CPPUNIT_ASSERT( l.unlink( v3 ) );
-                CPPUNIT_ASSERT( !l.find_with( v1.key(), less<value_type>() ));
+                CPPUNIT_ASSERT( !l.contains( v1.key(), less<value_type>() ));
                 CPPUNIT_ASSERT( !l.find_with( v2.key(), less<value_type>(), find_functor() ));
                 CPPUNIT_ASSERT( !l.find( v3.key(), find_functor() ));
                 CPPUNIT_ASSERT( l.empty() );
@@ -314,27 +314,27 @@ namespace ordlist {
                 OrdList::gc::force_dispose();
 
                 stat s( v3.s );
-                ret = l.ensure( v3, ensure_functor() );
+                ret = l.update( v3, update_functor() );
                 CPPUNIT_ASSERT( ret.first );
                 CPPUNIT_ASSERT( ret.second );
-                CPPUNIT_ASSERT( v3.s.nEnsureNewCall == s.nEnsureNewCall + 1);
-                CPPUNIT_ASSERT( v3.s.nEnsureExistsCall == s.nEnsureExistsCall );
+                CPPUNIT_ASSERT( v3.s.nUpdateNewCall == s.nUpdateNewCall + 1);
+                CPPUNIT_ASSERT( v3.s.nUpdateExistsCall == s.nUpdateExistsCall );
                 CPPUNIT_ASSERT( !l.empty() );
 
                 s = v2.s;
-                ret = l.ensure( v2, ensure_functor() );
+                ret = l.update( v2, update_functor() );
                 CPPUNIT_ASSERT( ret.first );
                 CPPUNIT_ASSERT( ret.second );
-                CPPUNIT_ASSERT( v2.s.nEnsureNewCall == s.nEnsureNewCall + 1);
-                CPPUNIT_ASSERT( v2.s.nEnsureExistsCall == s.nEnsureExistsCall );
+                CPPUNIT_ASSERT( v2.s.nUpdateNewCall == s.nUpdateNewCall + 1);
+                CPPUNIT_ASSERT( v2.s.nUpdateExistsCall == s.nUpdateExistsCall );
                 CPPUNIT_ASSERT( !l.empty() );
 
                 s = v1.s;
-                ret = l.ensure( v1, ensure_functor() );
+                ret = l.update( v1, update_functor() );
                 CPPUNIT_ASSERT( ret.first );
                 CPPUNIT_ASSERT( ret.second );
-                CPPUNIT_ASSERT( v1.s.nEnsureNewCall == s.nEnsureNewCall + 1);
-                CPPUNIT_ASSERT( v1.s.nEnsureExistsCall == s.nEnsureExistsCall );
+                CPPUNIT_ASSERT( v1.s.nUpdateNewCall == s.nUpdateNewCall + 1);
+                CPPUNIT_ASSERT( v1.s.nUpdateExistsCall == s.nUpdateExistsCall );
                 CPPUNIT_ASSERT( !l.empty() );
 
                 // Erase test
@@ -672,13 +672,13 @@ namespace ordlist {
                     CPPUNIT_ASSERT( l.empty() );
 
                     CPPUNIT_ASSERT( l.insert( v1 ))     ;   // true
-                    CPPUNIT_ASSERT( l.find( v1.key() ) == &v1 );
+                    CPPUNIT_ASSERT( l.contains( v1.key() ) == &v1 );
 
                     CPPUNIT_ASSERT( v1.s.nFindCall == 0 );
                     CPPUNIT_ASSERT( l.find( v1.key(), find_functor() ));
                     CPPUNIT_ASSERT( v1.s.nFindCall == 1 );
 
-                    CPPUNIT_ASSERT( l.find_with( v2.key(), less<value_type>() ) == nullptr );
+                    CPPUNIT_ASSERT( l.contains( v2.key(), less<value_type>() ) == nullptr );
                     CPPUNIT_ASSERT( !l.find_with( v3.key(), less<value_type>(), find_functor() ));
                     CPPUNIT_ASSERT( !l.empty() );
 
@@ -689,42 +689,42 @@ namespace ordlist {
                         CPPUNIT_ASSERT( !l.insert( v )) ;   // false
                     }
 
-                    std::pair<bool, bool> ret = l.ensure( v2, ensure_functor() );
+                    std::pair<bool, bool> ret = l.update( v2, update_functor() );
                     CPPUNIT_ASSERT( ret.first );
                     CPPUNIT_ASSERT( ret.second );
-                    CPPUNIT_ASSERT( v2.s.nEnsureNewCall == 1 );
-                    CPPUNIT_ASSERT( v2.s.nEnsureExistsCall == 0 );
+                    CPPUNIT_ASSERT( v2.s.nUpdateNewCall == 1 );
+                    CPPUNIT_ASSERT( v2.s.nUpdateExistsCall == 0 );
 
                     //CPPUNIT_ASSERT( !l.insert( v2 ))    ;   // assertion "is_empty"
 
-                    CPPUNIT_ASSERT( l.find( v1.key() ) == &v1 ) ;   // true
+                    CPPUNIT_ASSERT( l.contains( v1.key() ) == &v1 ) ;   // true
 
                     CPPUNIT_ASSERT( v1.s.nFindCall == 1 );
                     CPPUNIT_ASSERT( l.find( v1.key(), find_functor() ));
                     CPPUNIT_ASSERT( v1.s.nFindCall == 2 );
 
-                    CPPUNIT_ASSERT( l.find( v2.key() ) == &v2 );
+                    CPPUNIT_ASSERT( l.contains( v2.key() ) == &v2 );
 
                     CPPUNIT_ASSERT( v2.s.nFindCall == 0 );
                     CPPUNIT_ASSERT( l.find( v2.key(), find_functor() ));
                     CPPUNIT_ASSERT( v2.s.nFindCall == 1 );
 
-                    CPPUNIT_ASSERT( !l.find( v3.key() ));
+                    CPPUNIT_ASSERT( !l.contains( v3.key() ));
 
                     {
                         value_type v( v2 );
-                        ret = l.ensure( v, ensure_functor() );
+                        ret = l.update( v, update_functor() );
 
                         CPPUNIT_ASSERT( ret.first );
                         CPPUNIT_ASSERT( !ret.second );
-                        CPPUNIT_ASSERT( v2.s.nEnsureExistsCall == 1 );
-                        CPPUNIT_ASSERT( v.s.nEnsureExistsCall == 0 && v.s.nEnsureNewCall == 0 );
+                        CPPUNIT_ASSERT( v2.s.nUpdateExistsCall == 1 );
+                        CPPUNIT_ASSERT( v.s.nUpdateExistsCall == 0 && v.s.nUpdateNewCall == 0 );
                     }
 
                     CPPUNIT_ASSERT( !l.empty() );
 
                     CPPUNIT_ASSERT( l.insert( v3 ))     ;   // true
-                    CPPUNIT_ASSERT( l.find( v3.key() ) == &v3 );
+                    CPPUNIT_ASSERT( l.contains( v3.key() ) == &v3 );
 
                     CPPUNIT_ASSERT( v3.s.nFindCall == 0 );
                     CPPUNIT_ASSERT( l.find( v3.key(), find_functor() ));