You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ak...@apache.org on 2008/03/15 04:23:16 UTC
svn commit: r637345 - in
/directory/sandbox/akarasulu/bigbang/apacheds/core-avl/src:
main/java/org/apache/directory/server/core/avltree/AvlTreeMarshaller.java
test/java/org/apache/directory/server/core/avltree/AvlTreeMarshallerTest.java
Author: akarasulu
Date: Fri Mar 14 20:23:14 2008
New Revision: 637345
URL: http://svn.apache.org/viewvc?rev=637345&view=rev
Log:
fixed bug in marshalling which does not preserve the last node reference when only one element is in the tree
Modified:
directory/sandbox/akarasulu/bigbang/apacheds/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeMarshaller.java
directory/sandbox/akarasulu/bigbang/apacheds/core-avl/src/test/java/org/apache/directory/server/core/avltree/AvlTreeMarshallerTest.java
Modified: directory/sandbox/akarasulu/bigbang/apacheds/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeMarshaller.java
URL: http://svn.apache.org/viewvc/directory/sandbox/akarasulu/bigbang/apacheds/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeMarshaller.java?rev=637345&r1=637344&r2=637345&view=diff
==============================================================================
--- directory/sandbox/akarasulu/bigbang/apacheds/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeMarshaller.java (original)
+++ directory/sandbox/akarasulu/bigbang/apacheds/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeMarshaller.java Fri Mar 14 20:23:14 2008
@@ -116,6 +116,7 @@
return data;
}
+
/**
* writes the content of the AVLTree to an output stream.
* The current format is
@@ -198,7 +199,7 @@
tree.setFirst( nodes[0] );
- if( nodes.length > 1 )
+ if( nodes.length >= 1 )
{
tree.setLast( nodes[ nodes.length - 1 ] );
}
Modified: directory/sandbox/akarasulu/bigbang/apacheds/core-avl/src/test/java/org/apache/directory/server/core/avltree/AvlTreeMarshallerTest.java
URL: http://svn.apache.org/viewvc/directory/sandbox/akarasulu/bigbang/apacheds/core-avl/src/test/java/org/apache/directory/server/core/avltree/AvlTreeMarshallerTest.java?rev=637345&r1=637344&r2=637345&view=diff
==============================================================================
--- directory/sandbox/akarasulu/bigbang/apacheds/core-avl/src/test/java/org/apache/directory/server/core/avltree/AvlTreeMarshallerTest.java (original)
+++ directory/sandbox/akarasulu/bigbang/apacheds/core-avl/src/test/java/org/apache/directory/server/core/avltree/AvlTreeMarshallerTest.java Fri Mar 14 20:23:14 2008
@@ -99,8 +99,7 @@
@Test
- @Ignore( "marshaller fails to preserve last node reference" )
- public void testFirstLast() throws IOException
+ public void testRoundTripOneEntryFirstLast() throws IOException
{
AvlTree<Integer> original = new AvlTree<Integer>( comparator );
original.insert( 0 );
@@ -141,6 +140,34 @@
@Test
+ public void testRoundTripTwoEntriesFirstLast() throws IOException
+ {
+ AvlTree<Integer> original = new AvlTree<Integer>( comparator );
+ original.insert( 0 );
+ original.insert( 1 );
+ byte[] bites = treeMarshaller.serialize( original );
+ AvlTree<Integer> deserialized = treeMarshaller.deserialize( bites );
+ assertFalse( deserialized.isEmpty() );
+ assertEquals( 2, deserialized.getSize() );
+ assertEquals( 0, ( int ) deserialized.getFirst().getKey() );
+ assertEquals( 1, ( int ) deserialized.getFirst().next.getKey() );
+
+ assertNotNull( original.getFirst() );
+ assertEquals( 0, ( int ) original.getFirst().getKey() );
+
+ assertNotNull( deserialized.getFirst() );
+ assertEquals( 0, ( int ) deserialized.getFirst().getKey() );
+
+ assertNotNull( original.getLast() );
+ assertEquals( 1, ( int ) original.getLast().getKey() );
+
+ // this marshaller fails to preserve last node reference
+ assertNotNull( deserialized.getLast() );
+ assertEquals( 1, ( int ) deserialized.getLast().getKey() );
+ }
+
+
+ @Test
public void testRoundTripManyEntries() throws Exception
{
AvlTree<Integer> original = new AvlTree<Integer>( comparator );
@@ -160,6 +187,42 @@
assertEquals( ii, ( int ) cursor.get() );
cursor.next();
}
+ }
+
+
+ @Test
+ public void testRoundTripManyEntriesFirstLast() throws Exception
+ {
+ AvlTree<Integer> original = new AvlTree<Integer>( comparator );
+ for ( int ii = 0; ii < 100; ii++ )
+ {
+ original.insert( ii );
+ }
+ byte[] bites = treeMarshaller.serialize( original );
+ AvlTree<Integer> deserialized = treeMarshaller.deserialize( bites );
+ assertFalse( deserialized.isEmpty() );
+ assertEquals( 100, deserialized.getSize() );
+
+ AvlTreeCursor<Integer> cursor = new AvlTreeCursor<Integer>( deserialized );
+ cursor.first();
+ for ( int ii = 0; ii < 100; ii++ )
+ {
+ assertEquals( ii, ( int ) cursor.get() );
+ cursor.next();
+ }
+
+ assertNotNull( original.getFirst() );
+ assertEquals( 0, ( int ) original.getFirst().getKey() );
+
+ assertNotNull( deserialized.getFirst() );
+ assertEquals( 0, ( int ) deserialized.getFirst().getKey() );
+
+ assertNotNull( original.getLast() );
+ assertEquals( 99, ( int ) original.getLast().getKey() );
+
+ // this marshaller fails to preserve last node reference
+ assertNotNull( deserialized.getLast() );
+ assertEquals( 99, ( int ) deserialized.getLast().getKey() );
}