Title: [1149] trunk/qdox/src/main/java/com/thoughtworks/qdox/io: Add JavaConstructorTest

Diff

Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/io/DefaultModelWriter.java (1148 => 1149)

--- trunk/qdox/src/main/java/com/thoughtworks/qdox/io/DefaultModelWriter.java	2011-04-01 19:54:38 UTC (rev 1148)
+++ trunk/qdox/src/main/java/com/thoughtworks/qdox/io/DefaultModelWriter.java	2011-04-06 18:59:42 UTC (rev 1149)
@@ -176,9 +176,11 @@
         
         if (constructor.getExceptions().size() > 0) {
             buffer.write(" throws ");
-            for (Iterator<Type> excIter = constructor.getExceptions().iterator();excIter.hasNext();) {
+            for (Iterator<Type> excIter = constructor.getExceptions().iterator();excIter.hasNext();) 
+            {
                 buffer.write(excIter.next().getValue());
-                if(excIter.hasNext()) {
+                if(excIter.hasNext()) 
+                {
                     buffer.write(", ");
                 }
             }
@@ -186,7 +188,10 @@
         
         buffer.write( " {" );
         buffer.newline();
-        buffer.write( constructor.getSourceCode() );
+        if( constructor.getSourceCode() != null )
+        {
+          buffer.write( constructor.getSourceCode() );
+        }
         buffer.write( "}" );
         buffer.newline();
         

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

--- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaConstructor.java	2011-04-01 19:54:38 UTC (rev 1148)
+++ trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaConstructor.java	2011-04-06 18:59:42 UTC (rev 1149)
@@ -1,5 +1,8 @@
 package com.thoughtworks.qdox.model;
 
+import java.util.Iterator;
+import java.util.List;
+
 public class DefaultJavaConstructor
     extends AbstractBaseMethod implements JavaConstructor
 {
@@ -14,4 +17,79 @@
     {
         return getModelWriter().writeConstructor( this ).toString();
     }
+    
+    public String toString() {
+        StringBuffer result = new StringBuffer();
+        if(isPrivate()) {
+            result.append("private ");
+        }
+        else if(isProtected()) {
+            result.append("protected ");
+        }
+        else if(isPublic()) {
+            result.append("public ");
+        }
+        if(getParentClass() != null) {
+            result.append(getParentClass().getFullyQualifiedName());
+        }
+        result.append("(");
+        for(int paramIndex=0;paramIndex<getParameters().size();paramIndex++) {
+            if(paramIndex>0) {
+                result.append(",");
+            }
+            String typeValue = getParameters().get(paramIndex).getType().getResolvedValue(getTypeParameters());
+            result.append(typeValue);
+        }
+        result.append(")");
+        if (exceptions.size() > 0) {
+            result.append(" throws ");
+            for (Iterator<Type> excIter = exceptions.iterator();excIter.hasNext();) {
+                result.append(excIter.next().getValue());
+                if(excIter.hasNext()) {
+                    result.append(",");
+                }
+            }
+        }
+        return result.toString();
+    }
+    
+    /* (non-Javadoc)
+     * @see com.thoughtworks.qdox.model.JavaMethod#equals(java.lang.Object)
+     */
+    public boolean equals(Object obj) {
+        if (this == obj) 
+        {
+            return true;
+        }
+        if (obj == null) 
+        {
+            return false;   
+        }
+
+        JavaConstructor c = (JavaConstructor) obj;
+        if (!c.getName().equals(getName())) {
+            return false;   
+        }
+        
+        List<JavaParameter> myParams = getParameters();
+        List<JavaParameter> otherParams = c.getParameters();
+        if (otherParams.size() != myParams.size()) 
+        {
+            return false;   
+        }
+        for (int i = 0; i < myParams.size(); i++) 
+        {
+            if (!otherParams.get(i).equals(myParams.get(i)))
+            {
+                return false;
+            }
+        }
+        return this.varArgs == c.isVarArgs();
+    }
+
+    public int hashCode() {
+        int hashCode = getName().hashCode();
+        hashCode *= getParameters().size();
+        return hashCode;
+    }
 }

Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/model/JavaConstructor.java (1148 => 1149)

--- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/JavaConstructor.java	2011-04-01 19:54:38 UTC (rev 1148)
+++ trunk/qdox/src/main/java/com/thoughtworks/qdox/model/JavaConstructor.java	2011-04-06 18:59:42 UTC (rev 1149)
@@ -9,11 +9,15 @@
     public List<JavaParameter> getParameters();
 
     public JavaParameter getParameterByName( String name );
-
+    
+    public List<Type> getParameterTypes();
+    
     public List<Type> getExceptions();
 
     public String getSourceCode();
     
     public String getCodeBlock();
 
+    public boolean isVarArgs();
+
 }

Added: trunk/qdox/src/test/java/com/thoughtworks/qdox/model/DefaultJavaConstructorTest.java (0 => 1149)

--- trunk/qdox/src/test/java/com/thoughtworks/qdox/model/DefaultJavaConstructorTest.java	                        (rev 0)
+++ trunk/qdox/src/test/java/com/thoughtworks/qdox/model/DefaultJavaConstructorTest.java	2011-04-06 18:59:42 UTC (rev 1149)
@@ -0,0 +1,40 @@
+package com.thoughtworks.qdox.model;
+
+import static org.mockito.Mockito.*;
+import java.util.List;
+
+
+public class DefaultJavaConstructorTest extends JavaConstructorTest<DefaultJavaConstructor>
+{
+
+    @Override
+    protected DefaultJavaConstructor newJavaConstructor( String name )
+    {
+        DefaultJavaConstructor result = new DefaultJavaConstructor();
+        result.setName( name );
+        return result;
+    }
+    
+    @Override
+    protected void setModifiers( DefaultJavaConstructor constructor, List<String> modifiers )
+    {
+        constructor.setModifiers( modifiers );
+        
+    }
+    
+    @Override
+    protected void setParameters( DefaultJavaConstructor constructor, List<JavaParameter> parameters )
+    {
+        for ( JavaParameter javaParameter : parameters )
+        {
+            constructor.addParameter( javaParameter );
+        }
+        
+    }
+    
+    @Override
+    protected void setParentClass( DefaultJavaConstructor constructor, JavaClass parentClass )
+    {
+        constructor.setParentClass( parentClass );
+    }
+}
Property changes on: trunk/qdox/src/test/java/com/thoughtworks/qdox/model/DefaultJavaConstructorTest.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Added: trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaConstructorTest.java (0 => 1149)

--- trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaConstructorTest.java	                        (rev 0)
+++ trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaConstructorTest.java	2011-04-06 18:59:42 UTC (rev 1149)
@@ -0,0 +1,92 @@
+package com.thoughtworks.qdox.model;
+
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.junit.Test;
+
+public abstract class JavaConstructorTest<D extends JavaConstructor>
+{
+    
+    protected abstract D newJavaConstructor( String string );    
+
+    protected abstract void setModifiers( D constructor, List<String> asList );
+    protected abstract void setParentClass( D constructor, JavaClass cls );
+    protected abstract void setParameters( D constructor, List<JavaParameter> singletonList );
+
+    private Type newType( String name )
+    {
+        return newType( name, 0 );
+    }
+    
+    private Type newType( String name, int dimensions )
+    {
+        Type result = mock(Type.class);
+        when(result.getFullyQualifiedName()).thenReturn( name );
+        when(result.getDimensions()).thenReturn( dimensions );
+        return result;
+        
+    }
+    
+    private JavaParameter newJavaParameter( Type type, String name )
+    {
+        JavaParameter result = mock( JavaParameter.class );
+        when( result.getType() ).thenReturn( type );
+        when( result.getName() ).thenReturn( name );
+        return result;
+    }
+    
+    @Test
+    public void testGetCodeBlockConstructor() throws Exception {
+        D constructor = newJavaConstructor( "Blah" );
+        setModifiers(constructor, Arrays.asList(new String[]{"public"}));
+        assertEquals("public Blah() {\n}\n", constructor.getCodeBlock());
+    }
+    
+
+    @Test
+    public void testConstructorToString() throws Exception {
+        JavaClass cls = mock(JavaClass.class);
+        when(cls.getFullyQualifiedName()).thenReturn( "a.b.Executor" );
+        D constructor = newJavaConstructor( "Executor" );
+        setParentClass( constructor, cls );
+        assertEquals("a.b.Executor()", constructor.toString());
+    }
+
+    @Test
+    public void testConstructorParameterTypes() throws Exception {
+        JavaClass cls = mock(JavaClass.class);
+        when(cls.getFullyQualifiedName()).thenReturn( "a.b.Executor" );
+        D constructor = newJavaConstructor( "Executor" );
+        setParameters( constructor,  Collections.singletonList( newJavaParameter( newType("a.b.C"), "param" )  ));
+        setParentClass( constructor, cls );
+        assertEquals("a.b.C", constructor.getParameterTypes().get(0).getFullyQualifiedName());
+    }
+    
+    @Test
+    public void testHashCode() throws Exception {
+        D c1 = newJavaConstructor( "Thong" );
+        D c2 = newJavaConstructor( "Thong" );
+        
+        assertEquals(c1.hashCode(), c2.hashCode());
+    }
+    
+    @Test
+    public void testEquals() throws Exception {
+        D c1 = newJavaConstructor( "thing" );
+        D c2 = newJavaConstructor( "Thong" );
+        D c3 = newJavaConstructor( "Thong" );
+        
+        assertNotEquals(c1, c2);
+        assertEquals(c2, c3);
+    }
+    
+    private void assertNotEquals(Object o1, Object o2) {
+        assertTrue(o1.toString() + " should not equals " + o2.toString(), !o1.equals(o2));
+    }
+}
Property changes on: trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaConstructorTest.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

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

--- trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaMethodTest.java	2011-04-01 19:54:38 UTC (rev 1148)
+++ trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaMethodTest.java	2011-04-06 18:59:42 UTC (rev 1149)
@@ -132,13 +132,6 @@
         assertEquals("void blah() throws RuntimeException, java.lang.SheepException, CowException;\n", mth.getCodeBlock());
     }
 
-    public void testGetCodeBlockConstructor() throws Exception {
-        setName(mth, "Blah");
-        setModifiers(mth, Arrays.asList(new String[]{"public"}));
-        setConstructor(mth, true);
-        assertEquals("public Blah();\n", mth.getCodeBlock());
-    }
-
     public void testGetCodeBlockWithComment() throws Exception {
         setName(mth, "blah");
         setReturns(mth, newType("void"));


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to