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

Diff

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

--- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaParameter.java	2011-08-16 09:01:34 UTC (rev 1295)
+++ trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaParameter.java	2011-08-16 09:26:42 UTC (rev 1296)
@@ -123,7 +123,7 @@
 
     @Override
     public int hashCode() {
-        return 13 + getType().hashCode();
+        return 13 + ( isVarArgs() ? 1 : 0 ) + getType().hashCode();
     }
 
     @Override
@@ -138,8 +138,8 @@
             return false;
         }
         JavaParameter p = (JavaParameter) obj;
-        // name isn't used in equality check.
-        return getType().equals( p.getType() );
+        // name should not be used in equality check.
+        return getType().equals( p.getType() ) && isVarArgs() == p.isVarArgs();
     }
 	
     @Override

Modified: trunk/qdox/src/test/java/com/thoughtworks/qdox/model/DefaultJavaParameterTest.java (1295 => 1296)

--- trunk/qdox/src/test/java/com/thoughtworks/qdox/model/DefaultJavaParameterTest.java	2011-08-16 09:01:34 UTC (rev 1295)
+++ trunk/qdox/src/test/java/com/thoughtworks/qdox/model/DefaultJavaParameterTest.java	2011-08-16 09:26:42 UTC (rev 1296)
@@ -11,12 +11,19 @@
     @Override
     protected DefaultJavaParameter newJavaParameter( Type type, String name )
     {
-        return new DefaultJavaParameter(type, name);
+        return new DefaultJavaParameter( type, name );
     }
 
     @Override
+    protected DefaultJavaParameter newJavaParameter( Type type, String name, boolean varArgs )
+    {
+        return new DefaultJavaParameter( type, name, varArgs );
+    }
+
+    @Override
     protected void setMethod( DefaultJavaParameter parameter, JavaMethod method )
     {
         parameter.setParentMethod( method );
     }
+
 }

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

--- trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaParameterTest.java	2011-08-16 09:01:34 UTC (rev 1295)
+++ trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaParameterTest.java	2011-08-16 09:26:42 UTC (rev 1296)
@@ -1,7 +1,7 @@
 package com.thoughtworks.qdox.model;
 
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.*;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 import junit.framework.TestCase;
 
 public abstract class JavaParameterTest<P extends JavaParameter> extends TestCase {
@@ -10,17 +10,32 @@
         super(s);
     }
     
-    //constructors
-    protected abstract P newJavaParameter(Type type, String name);
+    // constructors
+    protected abstract P newJavaParameter( Type type, String name );
+
+    protected abstract P newJavaParameter( Type type, String name, boolean varArgs );
+
+    // setters
+    protected abstract void setMethod( P parameter, JavaMethod method );
     
-    //setters
-    protected abstract void setMethod(P parameter, JavaMethod method);
-    
     public void testHashCode()
     {
         assertTrue( "hashCode should never resolve to 0", newJavaParameter( Type.VOID, "" ).hashCode() != 0 );
+        
+        P simpleParameter = newJavaParameter( Type.VOID, "", false );
+        P varArgParameter = newJavaParameter( Type.VOID, "", true );
+        
+        assertTrue( simpleParameter.hashCode() != varArgParameter.hashCode() );        
     }
     
+    public void testEquals()
+    {
+        P simpleParameter = newJavaParameter( Type.VOID, "", false );
+        P varArgParameter = newJavaParameter( Type.VOID, "", true );
+        
+        assertTrue( !simpleParameter.equals( varArgParameter ) );        
+    }
+    
     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