- Revision
- 1149
- Author
- rfscholte
- Date
- 2011-04-06 13:59:42 -0500 (Wed, 06 Apr 2011)
Log Message
Add JavaConstructorTest Improve DefaultModelWriter.writeConstructor() Remove test of JavaMethodTest due to invalid constructor syntax
Modified Paths
- trunk/qdox/src/main/java/com/thoughtworks/qdox/io/DefaultModelWriter.java
- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaConstructor.java
- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/JavaConstructor.java
- trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaMethodTest.java
Added Paths
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:
