Title: [1293] trunk/qdox/src/test/java/com/thoughtworks/qdox/model: Fix QDOX-236: HashCode is invalid

Diff

Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaClass.java (1292 => 1293)

--- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaClass.java	2011-08-13 22:23:49 UTC (rev 1292)
+++ trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaClass.java	2011-08-15 08:53:29 UTC (rev 1293)
@@ -859,7 +859,7 @@
     @Override
     public int hashCode()
     {
-        return getFullyQualifiedName().hashCode();
+        return 2 + getFullyQualifiedName().hashCode();
     }
 
     // ideally this shouldn't be required, but we must as long as Types can be created without classLibrary

Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaConstructor.java (1292 => 1293)

--- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaConstructor.java	2011-08-13 22:23:49 UTC (rev 1292)
+++ trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaConstructor.java	2011-08-15 08:53:29 UTC (rev 1293)
@@ -72,11 +72,12 @@
         }
         return result.toString();
     }
-    
+
     @Override
-    public int hashCode() {
-        int hashCode = getName().hashCode();
-        hashCode *= getParameters().size();
+    public int hashCode()
+    {
+        int hashCode = 3 + getName().hashCode();
+        hashCode *= 31 + getParameters().hashCode();
         return hashCode;
     }
 

Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaField.java (1292 => 1293)

--- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaField.java	2011-08-13 22:23:49 UTC (rev 1292)
+++ trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaField.java	2011-08-15 08:53:29 UTC (rev 1293)
@@ -161,6 +161,15 @@
     @Override
     public int hashCode()
     {
-        return getDeclaringClass().hashCode() * getName().hashCode();
+        int hashCode = 5;
+        if ( getDeclaringClass() != null )
+        {
+            hashCode *=31 + getDeclaringClass().hashCode();
+        }
+        if( getName() != null )
+        {
+            hashCode *= 37 + getName().hashCode();    
+        }
+        return hashCode;
     }
 }

Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaMethod.java (1292 => 1293)

--- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaMethod.java	2011-08-13 22:23:49 UTC (rev 1292)
+++ trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaMethod.java	2011-08-15 08:53:29 UTC (rev 1293)
@@ -190,13 +190,22 @@
     }
 
     @Override
-    public int hashCode() {
-        int hashCode = getName().hashCode();
-        if (returns != null) 
+    public int hashCode()
+    {
+        int hashCode = 7;
+        if ( getDeclaringClass() != null )
         {
-            hashCode *= returns.hashCode();
+            hashCode *= 31 + getDeclaringClass().hashCode();
         }
-        hashCode *= getParameters().size();
+        if ( getName() != null )
+        {
+            hashCode *= 37 + getName().hashCode();
+        }
+        hashCode *= 41 + getParameters().hashCode();
+        if ( returns != null )
+        {
+            hashCode *= 43 + returns.hashCode();
+        }
         return hashCode;
     }
 

Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaPackage.java (1292 => 1293)

--- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaPackage.java	2011-08-13 22:23:49 UTC (rev 1292)
+++ trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaPackage.java	2011-08-15 08:53:29 UTC (rev 1293)
@@ -118,7 +118,7 @@
     }
 
     public int hashCode() {
-        return name.hashCode();
+        return 11 + name.hashCode();
     }
     
     /**

Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaParameter.java (1292 => 1293)

--- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaParameter.java	2011-08-13 22:23:49 UTC (rev 1292)
+++ trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaParameter.java	2011-08-15 08:53:29 UTC (rev 1293)
@@ -123,7 +123,7 @@
 
     @Override
     public int hashCode() {
-        return getType().hashCode();
+        return 13 + getType().hashCode();
     }
 
     @Override

Modified: trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaConstructorTest.java (1292 => 1293)

--- trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaConstructorTest.java	2011-08-13 22:23:49 UTC (rev 1292)
+++ trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaConstructorTest.java	2011-08-15 08:53:29 UTC (rev 1293)
@@ -70,6 +70,8 @@
     
     @Test
     public void testHashCode() throws Exception {
+        assertTrue( "hashCode should never resolve to 0", newJavaConstructor( "" ).hashCode() != 0 );
+        
         D c1 = newJavaConstructor( "Thong" );
         D c2 = newJavaConstructor( "Thong" );
         

Modified: trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaFieldTest.java (1292 => 1293)

--- trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaFieldTest.java	2011-08-13 22:23:49 UTC (rev 1292)
+++ trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaFieldTest.java	2011-08-15 08:53:29 UTC (rev 1293)
@@ -46,6 +46,10 @@
         return result;
     }
     
+    public void testHashCode()
+    {
+        assertTrue( "hashCode should never resolve to 0", newJavaField().hashCode() != 0 );
+    }
     
     public void testGetCodeBlock() throws Exception {
         F fld = newJavaField();

Modified: trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaMethodTest.java (1292 => 1293)

--- trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaMethodTest.java	2011-08-13 22:23:49 UTC (rev 1292)
+++ trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaMethodTest.java	2011-08-15 08:53:29 UTC (rev 1293)
@@ -243,6 +243,8 @@
     }
 
     public void testHashCode() throws Exception {
+        assertTrue( "hashCode should never resolve to 0", newJavaMethod( Type.VOID, "" ).hashCode() != 0 );
+        
         setName(mth, "thing");
         setParameters(mth, Arrays.asList( newJavaParameter(newType("int", 1), "blah"), newJavaParameter(newType("java.lang.String", 2), "thing"), newJavaParameter(newType("X", 3), "") ));
         setReturns(mth, newType("void"));

Modified: trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaPackageTest.java (1292 => 1293)

--- trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaPackageTest.java	2011-08-13 22:23:49 UTC (rev 1292)
+++ trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaPackageTest.java	2011-08-15 08:53:29 UTC (rev 1293)
@@ -35,6 +35,12 @@
         assertTrue( pckg.equals( mockPckg ) );
     }
     
+    public void testHashCode() 
+    {
+        assertTrue( "hashCode should never resolve to 0", newJavaPackage( "" ).hashCode() != 0 );
+    }
+    
+    
     @Test
     public void testListAccessors() throws Exception {
         P pckg = newJavaPackage( "com.foo.bar" );

Modified: trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaParameterTest.java (1292 => 1293)

--- trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaParameterTest.java	2011-08-13 22:23:49 UTC (rev 1292)
+++ trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaParameterTest.java	2011-08-15 08:53:29 UTC (rev 1293)
@@ -1,5 +1,6 @@
 package com.thoughtworks.qdox.model;
 
+import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.*;
 import junit.framework.TestCase;
 
@@ -15,6 +16,11 @@
     //setters
     protected abstract void setMethod(P parameter, JavaMethod method);
     
+    public void testHashCode()
+    {
+        assertTrue( "hashCode should never resolve to 0", newJavaParameter( Type.VOID, "" ).hashCode() != 0 );
+    }
+    
     protected Type newType(String typeName) {
         Type result = mock(Type.class);
         when( result.getFullyQualifiedName()).thenReturn( typeName );


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to