Author: elecharny
Date: Sun Jul 22 06:06:31 2012
New Revision: 1364215

URL: http://svn.apache.org/viewvc?rev=1364215&view=rev
Log:
o Fixed a bug when we were deleting an element which key was present in the 
root page
o Added some more tests

Modified:
    labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/Node.java
    
labs/mavibot/trunk/mavibot/src/test/java/org/apache/mavibot/btree/BTreeTest.java

Modified: 
labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/Node.java
URL: 
http://svn.apache.org/viewvc/labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/Node.java?rev=1364215&r1=1364214&r2=1364215&view=diff
==============================================================================
--- labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/Node.java 
(original)
+++ labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/Node.java 
Sun Jul 22 06:06:31 2012
@@ -441,7 +441,14 @@ import java.util.LinkedList;
             }
         }
         
-        newLeftMost = newNode.keys[0];
+        if ( newNode.keys[0] == mergedResult.getRemovedElement().getKey() )
+        {
+            newLeftMost = newNode.keys[0];
+        }
+        else
+        {
+            newLeftMost = mergedResult.getNewLeftMost();
+        }
         
         // Create the result
         RemoveResult<K, V> result = new RemoveResult<K, V>( newNode, 
mergedResult.getRemovedElement(), newLeftMost );

Modified: 
labs/mavibot/trunk/mavibot/src/test/java/org/apache/mavibot/btree/BTreeTest.java
URL: 
http://svn.apache.org/viewvc/labs/mavibot/trunk/mavibot/src/test/java/org/apache/mavibot/btree/BTreeTest.java?rev=1364215&r1=1364214&r2=1364215&view=diff
==============================================================================
--- 
labs/mavibot/trunk/mavibot/src/test/java/org/apache/mavibot/btree/BTreeTest.java
 (original)
+++ 
labs/mavibot/trunk/mavibot/src/test/java/org/apache/mavibot/btree/BTreeTest.java
 Sun Jul 22 06:06:31 2012
@@ -917,12 +917,66 @@ public class BTreeTest
     {
         BTree<Integer, String> btree = createMultiLevelBTreeHalfFull();
 
-        // Case 1 : delete an element in the btree in the leftmost leaf
+        // Case 1 : delete the leftmost element in the btree in the leftmost 
leaf
         Tuple<Integer, String> removed = btree.delete( 2 );
         assertEquals( 2, removed.getKey().intValue() );
         assertEquals( "v2", removed.getValue() );
         assertNull( btree.find( 2 ) );
         
+        // delete the third element in the first leaf
+        removed = btree.delete( 7 );
+        assertEquals( 7, removed.getKey().intValue() );
+        assertEquals( "v7", removed.getValue() );
+        assertNull( btree.find( 7 ) );
+        
+        // Case 2 : Delete the second element in the leftmost leaf
+        removed = btree.delete( 6 );
+        assertEquals( 6, removed.getKey().intValue() );
+        assertEquals( "v6", removed.getValue() );
+        assertNull( btree.find( 6 ) );
+
+        // delete the third element in the first leaf
+        removed = btree.delete( 11 );
+        assertEquals( 11, removed.getKey().intValue() );
+        assertEquals( "v11", removed.getValue() );
+        assertNull( btree.find( 11 ) );
+        
+        // Case 3 : delete the rightmost element in the btree in the rightmost 
leaf
+        removed = btree.delete( 99 );
+        assertEquals( 99, removed.getKey().intValue() );
+        assertEquals( "v99", removed.getValue() );
+        assertNull( btree.find( 99 ) );
+        
+        // delete the third element in the last leaf
+        removed = btree.delete( 98 );
+        assertEquals( 98, removed.getKey().intValue() );
+        assertEquals( "v98", removed.getValue() );
+        assertNull( btree.find( 98 ) );
+        
+        // Case 2 : Delete the first element in the rightmost leaf
+        removed = btree.delete( 94 );
+        assertEquals( 94, removed.getKey().intValue() );
+        assertEquals( "v94", removed.getValue() );
+        assertNull( btree.find( 94 ) );
+
+        // delete the third element in the last leaf
+        removed = btree.delete( 95 );
+        assertEquals( 95, removed.getKey().intValue() );
+        assertEquals( "v95", removed.getValue() );
+        assertNull( btree.find( 95 ) );
+
+        // Case 5 : delete the leftmost element which is refered in the root 
node
+        removed = btree.delete( 22 );
+        assertEquals( 22, removed.getKey().intValue() );
+        assertEquals( "v22", removed.getValue() );
+        assertNull( btree.find( 22 ) );
+
+        // delete the third element in the last leaf
+        removed = btree.delete( 27 );
+        assertEquals( 27, removed.getKey().intValue() );
+        assertEquals( "v27", removed.getValue() );
+        assertNull( btree.find( 27 ) );
+
         System.out.println( btree );
     }
     



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to