Author: wavey
Date: 2008-04-18 21:56:59 +0000 (Fri, 18 Apr 2008)
New Revision: 19401
Modified:
trunk/freenet/src/freenet/support/Fields.java
trunk/freenet/test/freenet/support/FieldsTest.java
Log:
corrected refactoring bug introduced in R19396 and added unit test for
Fields.longToHashCode(byte[]) to demonstrate the fix :/
Modified: trunk/freenet/src/freenet/support/Fields.java
===================================================================
--- trunk/freenet/src/freenet/support/Fields.java 2008-04-18 21:00:43 UTC
(rev 19400)
+++ trunk/freenet/src/freenet/support/Fields.java 2008-04-18 21:56:59 UTC
(rev 19401)
@@ -431,7 +431,7 @@
* Long version of above Not believed to be secure in any sense of the
word :)
*/
public static final long longHashCode(byte[] b) {
- return longHashCode(b, 0, 0);
+ return longHashCode(b, 0, b.length);
}
/**
Modified: trunk/freenet/test/freenet/support/FieldsTest.java
===================================================================
--- trunk/freenet/test/freenet/support/FieldsTest.java 2008-04-18 21:00:43 UTC
(rev 19400)
+++ trunk/freenet/test/freenet/support/FieldsTest.java 2008-04-18 21:56:59 UTC
(rev 19401)
@@ -4,6 +4,11 @@
package freenet.support;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.omg.CORBA.LongHolder;
+
import junit.framework.TestCase;
/**
@@ -220,4 +225,19 @@
assertEquals(0, Fields.hashCode(input));
}
+
+ public void testLongHashcode() {
+
+ byte[] b1 = new byte[] { 1, 1, 2, 2, 3, 3 };
+ byte[] b2 = new byte[] { 2, 2, 3, 3, 4, 4 };
+ byte[] b3 = new byte[] { 1, 1, 2, 2, 3, 3 };
+
+ Long l1 = new Long(Fields.longHashCode(b1));
+ Long l2 = new Long(Fields.longHashCode(b2));
+ Long l3 = new Long(Fields.longHashCode(b3));
+
+ assertFalse(l1.equals(l2));
+ assertFalse(l2.equals(l3));
+ assertTrue(l3.equals(l1)); // should be same due to
Fields.longHashcode
+ }
}