MichaelList, LazyList, MichaelMap:
[libcds.git] / tests / test-hdr / list / hdr_lazy_kv.h
index 4eeef280514363d4ecc1473861a2bb25e7d3aa0d..ad2bb5214fc5da081704a36e3db232a7f47392a7 100644 (file)
@@ -75,7 +75,7 @@ namespace ordlist {
             }
         };
 
-        struct ensure_functor {
+        struct update_functor {
             template <typename T>
             void operator()( bool /*bNew*/, T& pair )
             {
@@ -124,17 +124,17 @@ namespace ordlist {
             CPPUNIT_ASSERT( l.empty() );
 
             // insert / find test
-            CPPUNIT_ASSERT( !l.find( 100 ));
+            CPPUNIT_ASSERT( !l.contains( 100 ));
             CPPUNIT_ASSERT( l.insert( 100 ));
             CPPUNIT_ASSERT( !l.empty() );
-            CPPUNIT_ASSERT( l.find( 100 ));
+            CPPUNIT_ASSERT( l.contains( 100 ));
 
             check_value chk(0);
             CPPUNIT_ASSERT( l.find( 100, std::ref( chk ) ) );
 
-            CPPUNIT_ASSERT( !l.find_with( 50, lt<key_type>() ));
+            CPPUNIT_ASSERT( !l.contains( 50, lt<key_type>() ));
             CPPUNIT_ASSERT( l.insert( 50, 500 ));
-            CPPUNIT_ASSERT( l.find_with( 50, lt<key_type>() ));
+            CPPUNIT_ASSERT( l.contains( 50, lt<key_type>() ));
             CPPUNIT_ASSERT( !l.insert( 50, 5 ));
             chk.m_nExpected = 500;
             CPPUNIT_ASSERT( l.find( 50, std::ref( chk ) ) );
@@ -142,9 +142,9 @@ namespace ordlist {
             CPPUNIT_ASSERT( l.find( 100, std::ref( chk ) ) );
             CPPUNIT_ASSERT( !l.empty() );
 
-            CPPUNIT_ASSERT( !l.find( 150 ));
+            CPPUNIT_ASSERT( !l.contains( 150 ));
             CPPUNIT_ASSERT( l.insert_with( 150, insert_functor() ));
-            CPPUNIT_ASSERT( l.find( 150 ));
+            CPPUNIT_ASSERT( l.contains( 150 ));
             chk.m_nExpected = 1500;
             CPPUNIT_ASSERT( l.find_with( 150, lt<key_type>(), std::ref( chk ) ) );
             chk.m_nExpected = 0;
@@ -158,29 +158,29 @@ namespace ordlist {
             CPPUNIT_ASSERT( !l.erase( 500 ));
             CPPUNIT_ASSERT( !l.empty() );
 
-            CPPUNIT_ASSERT( l.find( 50 ));
+            CPPUNIT_ASSERT( l.contains( 50 ));
             {
                 erase_functor ef;
                 l.erase( 50, std::ref( ef ) );
                 CPPUNIT_ASSERT( ef.nKey == 50 );
                 CPPUNIT_ASSERT( ef.nVal == 500 );
             }
-            CPPUNIT_ASSERT( !l.find( 50 ));
+            CPPUNIT_ASSERT( !l.contains( 50 ));
 
-            // ensure test
-            std::pair<bool, bool> bEnsureResult;
-            bEnsureResult = l.ensure( 100, ensure_functor() );
-            CPPUNIT_ASSERT( bEnsureResult.first );
-            CPPUNIT_ASSERT( !bEnsureResult.second );
+            // update test
+            std::pair<bool, bool> bUpdateResult;
+            bUpdateResult = l.update( 100, update_functor() );
+            CPPUNIT_ASSERT( bUpdateResult.first );
+            CPPUNIT_ASSERT( !bUpdateResult.second );
             chk.m_nExpected = 5000;
             CPPUNIT_ASSERT( l.find( 100, std::ref( chk ) ) );
 
             {
-                ensure_functor ef;
-                bEnsureResult = l.ensure( 50, std::ref( ef ) );
+                update_functor ef;
+                bUpdateResult = l.update( 50, std::ref( ef ) );
             }
-            CPPUNIT_ASSERT( bEnsureResult.first );
-            CPPUNIT_ASSERT( bEnsureResult.second );
+            CPPUNIT_ASSERT( bUpdateResult.first );
+            CPPUNIT_ASSERT( bUpdateResult.second );
             chk.m_nExpected = 2500;
             CPPUNIT_ASSERT( l.find( 50, std::ref( chk ) ) );
 
@@ -480,73 +480,73 @@ namespace ordlist {
                 CPPUNIT_ASSERT( l.empty() );
 
                 // insert / find test
-                CPPUNIT_ASSERT( l.find( 100 ) == l.end() );
+                CPPUNIT_ASSERT( l.contains( 100 ) == l.end() );
                 CPPUNIT_ASSERT( l.insert( 100 ) != l.end() );
                 CPPUNIT_ASSERT( !l.empty() );
-                it = l.find( 100 );
+                it = l.contains( 100 );
                 CPPUNIT_ASSERT( it != l.end() );
                 CPPUNIT_ASSERT( it.key() == 100 );
                 CPPUNIT_ASSERT( it.val().m_val == 0 );
 
-                CPPUNIT_ASSERT( l.find_with( 50, lt<key_type>() ) == l.end() );
+                CPPUNIT_ASSERT( l.contains( 50, lt<key_type>() ) == l.end() );
                 CPPUNIT_ASSERT( l.insert( 50, 500 ) != l.end());
-                it = l.find( 50 );
+                it = l.contains( 50 );
                 CPPUNIT_ASSERT( it != l.end() );
                 CPPUNIT_ASSERT( it.key() == 50 );
                 CPPUNIT_ASSERT( it.val().m_val == 500 );
 
                 CPPUNIT_ASSERT( l.insert( 50, 5 ) == l.end() );
-                it = l.find( 50 );
+                it = l.contains( 50 );
                 CPPUNIT_ASSERT( it != l.end() );
                 CPPUNIT_ASSERT( it.key() == 50 );
                 CPPUNIT_ASSERT( it.val().m_val == 500 );
                 CPPUNIT_ASSERT( !l.empty() );
 
-                CPPUNIT_ASSERT( l.find( 150 ) == l.end() );
+                CPPUNIT_ASSERT( l.contains( 150 ) == l.end() );
                 CPPUNIT_ASSERT( l.insert_with( 150, insert_functor() ) != l.end() );
-                it = l.find( 150 );
+                it = l.contains( 150 );
                 CPPUNIT_ASSERT( it != l.end() );
                 CPPUNIT_ASSERT( it.key() == 150 );
                 CPPUNIT_ASSERT( it.val().m_val == 1500 );
-                it = l.find( 100 );
+                it = l.contains( 100 );
                 CPPUNIT_ASSERT( it != l.end() );
                 CPPUNIT_ASSERT( it.key() == 100 );
                 CPPUNIT_ASSERT( it.val().m_val == 0 );
-                it = l.find( 50 );
+                it = l.contains( 50 );
                 CPPUNIT_ASSERT( it != l.end() );
                 CPPUNIT_ASSERT( it.key() == 50 );
                 CPPUNIT_ASSERT( it.val().m_val == 500 );
                 it.val().m_val = 25;
-                it = l.find( 50 );
+                it = l.contains( 50 );
                 CPPUNIT_ASSERT( it != l.end() );
                 CPPUNIT_ASSERT( it.key() == 50 );
                 CPPUNIT_ASSERT( it.val().m_val == 25 );
                 CPPUNIT_ASSERT( !l.empty() );
 
-                // ensure existing item
-                std::pair<iterator, bool> ensureResult;
-                ensureResult = l.ensure( 100 );
-                CPPUNIT_ASSERT( !ensureResult.second );
-                CPPUNIT_ASSERT( ensureResult.first.key() == 100 );
-                CPPUNIT_ASSERT( ensureResult.first.val().m_val == 0   );
-                ensureResult.first.val().m_val = 5;
-                it = l.find( 100 );
+                // update existing item
+                std::pair<iterator, bool> updateResult;
+                updateResult = l.update( 100 );
+                CPPUNIT_ASSERT( !updateResult.second );
+                CPPUNIT_ASSERT( updateResult.first.key() == 100 );
+                CPPUNIT_ASSERT( updateResult.first.val().m_val == 0   );
+                updateResult.first.val().m_val = 5;
+                it = l.contains( 100 );
                 CPPUNIT_ASSERT( it != l.end() );
                 CPPUNIT_ASSERT( it.key() == 100 );
                 CPPUNIT_ASSERT( it.val().m_val == 5 );
 
                 CPPUNIT_ASSERT( !l.empty() );
 
-                // ensure new item
-                ensureResult = l.ensure( 1000 );
-                CPPUNIT_ASSERT( ensureResult.second );
-                CPPUNIT_ASSERT( ensureResult.first.key() == 1000 );
-                CPPUNIT_ASSERT( ensureResult.first.val().m_val == 0   );
-                ensureResult.first.val().m_val = 33;
-                ensureResult = l.ensure( 1000 );
-                CPPUNIT_ASSERT( !ensureResult.second );
-                CPPUNIT_ASSERT( ensureResult.first.key() == 1000 );
-                CPPUNIT_ASSERT( ensureResult.first.val().m_val == 33   );
+                // update new item
+                updateResult = l.update( 1000 );
+                CPPUNIT_ASSERT( updateResult.second );
+                CPPUNIT_ASSERT( updateResult.first.key() == 1000 );
+                CPPUNIT_ASSERT( updateResult.first.val().m_val == 0   );
+                updateResult.first.val().m_val = 33;
+                updateResult = l.update( 1000 );
+                CPPUNIT_ASSERT( !updateResult.second );
+                CPPUNIT_ASSERT( updateResult.first.key() == 1000 );
+                CPPUNIT_ASSERT( updateResult.first.val().m_val == 33   );
 
                 // clear test
                 l.clear();
@@ -560,12 +560,12 @@ namespace ordlist {
                 CPPUNIT_ASSERT( l.emplace( 501, 2 ) == l.end());
                 CPPUNIT_ASSERT( l.emplace( 251, 10) == l.end());
 
-                it = l.find(501);
+                it = l.contains(501);
                 CPPUNIT_ASSERT( it != l.end() );
                 CPPUNIT_ASSERT( it.key() == 501 );
                 CPPUNIT_ASSERT( it.val().m_val == 0 );
 
-                it = l.find(251);
+                it = l.contains(251);
                 CPPUNIT_ASSERT( it != l.end() );
                 CPPUNIT_ASSERT( it.key() == 251 );
                 CPPUNIT_ASSERT( it.val().m_val == 152 );
@@ -616,7 +616,7 @@ namespace ordlist {
 
                     // Check that we have visited all items
                     for ( int i = 0; i < nCount; ++i ) {
-                        it = l.find( i );
+                        it = l.contains( i );
                         CPPUNIT_ASSERT( it != l.end() );
                         CPPUNIT_ASSERT( it.key() == i );
                         CPPUNIT_ASSERT( it.val().m_val == i * 3 );
@@ -662,73 +662,73 @@ namespace ordlist {
                 CPPUNIT_ASSERT( l.empty() );
 
                 // insert / find test
-                CPPUNIT_ASSERT( l.find( 100 ) == l.end() );
+                CPPUNIT_ASSERT( l.contains( 100 ) == l.end() );
                 CPPUNIT_ASSERT( l.insert( 100 ) != l.end() );
                 CPPUNIT_ASSERT( !l.empty() );
-                it = l.find( 100 );
+                it = l.contains( 100 );
                 CPPUNIT_ASSERT( it != l.end() );
                 CPPUNIT_ASSERT( it.key() == 100 );
                 CPPUNIT_ASSERT( it.val().m_val == 0 );
 
-                CPPUNIT_ASSERT( l.find_with( 50, eq<key_type>() ) == l.end() );
+                CPPUNIT_ASSERT( l.contains( 50, eq<key_type>() ) == l.end() );
                 CPPUNIT_ASSERT( l.insert( 50, 500 ) != l.end());
-                it = l.find( 50 );
+                it = l.contains( 50 );
                 CPPUNIT_ASSERT( it != l.end() );
                 CPPUNIT_ASSERT( it.key() == 50 );
                 CPPUNIT_ASSERT( it.val().m_val == 500 );
 
                 CPPUNIT_ASSERT( l.insert( 50, 5 ) == l.end() );
-                it = l.find( 50 );
+                it = l.contains( 50 );
                 CPPUNIT_ASSERT( it != l.end() );
                 CPPUNIT_ASSERT( it.key() == 50 );
                 CPPUNIT_ASSERT( it.val().m_val == 500 );
                 CPPUNIT_ASSERT( !l.empty() );
 
-                CPPUNIT_ASSERT( l.find( 150 ) == l.end() );
+                CPPUNIT_ASSERT( l.contains( 150 ) == l.end() );
                 CPPUNIT_ASSERT( l.insert_with( 150, insert_functor() ) != l.end() );
-                it = l.find( 150 );
+                it = l.contains( 150 );
                 CPPUNIT_ASSERT( it != l.end() );
                 CPPUNIT_ASSERT( it.key() == 150 );
                 CPPUNIT_ASSERT( it.val().m_val == 1500 );
-                it = l.find( 100 );
+                it = l.contains( 100 );
                 CPPUNIT_ASSERT( it != l.end() );
                 CPPUNIT_ASSERT( it.key() == 100 );
                 CPPUNIT_ASSERT( it.val().m_val == 0 );
-                it = l.find( 50 );
+                it = l.contains( 50 );
                 CPPUNIT_ASSERT( it != l.end() );
                 CPPUNIT_ASSERT( it.key() == 50 );
                 CPPUNIT_ASSERT( it.val().m_val == 500 );
                 it.val().m_val = 25;
-                it = l.find( 50 );
+                it = l.contains( 50 );
                 CPPUNIT_ASSERT( it != l.end() );
                 CPPUNIT_ASSERT( it.key() == 50 );
                 CPPUNIT_ASSERT( it.val().m_val == 25 );
                 CPPUNIT_ASSERT( !l.empty() );
 
-                // ensure existing item
-                std::pair<iterator, bool> ensureResult;
-                ensureResult = l.ensure( 100 );
-                CPPUNIT_ASSERT( !ensureResult.second );
-                CPPUNIT_ASSERT( ensureResult.first.key() == 100 );
-                CPPUNIT_ASSERT( ensureResult.first.val().m_val == 0   );
-                ensureResult.first.val().m_val = 5;
-                it = l.find( 100 );
+                // update existing item
+                std::pair<iterator, bool> updateResult;
+                updateResult = l.update( 100 );
+                CPPUNIT_ASSERT( !updateResult.second );
+                CPPUNIT_ASSERT( updateResult.first.key() == 100 );
+                CPPUNIT_ASSERT( updateResult.first.val().m_val == 0   );
+                updateResult.first.val().m_val = 5;
+                it = l.contains( 100 );
                 CPPUNIT_ASSERT( it != l.end() );
                 CPPUNIT_ASSERT( it.key() == 100 );
                 CPPUNIT_ASSERT( it.val().m_val == 5 );
 
                 CPPUNIT_ASSERT( !l.empty() );
 
-                // ensure new item
-                ensureResult = l.ensure( 1000 );
-                CPPUNIT_ASSERT( ensureResult.second );
-                CPPUNIT_ASSERT( ensureResult.first.key() == 1000 );
-                CPPUNIT_ASSERT( ensureResult.first.val().m_val == 0   );
-                ensureResult.first.val().m_val = 33;
-                ensureResult = l.ensure( 1000 );
-                CPPUNIT_ASSERT( !ensureResult.second );
-                CPPUNIT_ASSERT( ensureResult.first.key() == 1000 );
-                CPPUNIT_ASSERT( ensureResult.first.val().m_val == 33   );
+                // update new item
+                updateResult = l.update( 1000 );
+                CPPUNIT_ASSERT( updateResult.second );
+                CPPUNIT_ASSERT( updateResult.first.key() == 1000 );
+                CPPUNIT_ASSERT( updateResult.first.val().m_val == 0   );
+                updateResult.first.val().m_val = 33;
+                updateResult = l.update( 1000 );
+                CPPUNIT_ASSERT( !updateResult.second );
+                CPPUNIT_ASSERT( updateResult.first.key() == 1000 );
+                CPPUNIT_ASSERT( updateResult.first.val().m_val == 33   );
 
                 // clear test
                 l.clear();
@@ -742,12 +742,12 @@ namespace ordlist {
                 CPPUNIT_ASSERT( l.emplace( 501, 2 ) == l.end());
                 CPPUNIT_ASSERT( l.emplace( 251, 10) == l.end());
 
-                it = l.find(501);
+                it = l.contains(501);
                 CPPUNIT_ASSERT( it != l.end() );
                 CPPUNIT_ASSERT( it.key() == 501 );
                 CPPUNIT_ASSERT( it.val().m_val == 0 );
 
-                it = l.find(251);
+                it = l.contains(251);
                 CPPUNIT_ASSERT( it != l.end() );
                 CPPUNIT_ASSERT( it.key() == 251 );
                 CPPUNIT_ASSERT( it.val().m_val == 152 );
@@ -798,7 +798,7 @@ namespace ordlist {
 
                     // Check that we have visited all items
                     for ( int i = 0; i < nCount; ++i ) {
-                        it = l.find( i );
+                        it = l.contains( i );
                         CPPUNIT_ASSERT( it != l.end() );
                         CPPUNIT_ASSERT( it.key() == i );
                         CPPUNIT_ASSERT( it.val().m_val == i * 3 );