- Revision
- 1446
- Author
- rfscholte
- Date
- 2011-10-26 15:45:41 -0500 (Wed, 26 Oct 2011)
Log Message
Mock/improve some tests, add JavaClass.equals()
Modified Paths
- trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaClassTest.java
- trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaConstructorTest.java
- trunk/qdox/src/test/java/com/thoughtworks/qdox/model/impl/DefaultJavaClassTest.java
Diff
Modified: trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaClassTest.java (1445 => 1446)
--- trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaClassTest.java 2011-10-26 19:27:11 UTC (rev 1445) +++ trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaClassTest.java 2011-10-26 20:45:41 UTC (rev 1446) @@ -1,5 +1,8 @@ package com.thoughtworks.qdox.model; +import static org.junit.Assert.*; +import static org.hamcrest.CoreMatchers.*; + import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -9,25 +12,24 @@ import java.util.LinkedList; import java.util.List; +import org.junit.Before; +import org.junit.Test; + import com.thoughtworks.qdox.model.impl.DefaultJavaType; -import junit.framework.TestCase; +public abstract class JavaClassTest<C extends JavaClass> { -public abstract class JavaClassTest<C extends JavaClass> extends TestCase { - private C cls; private JavaSource src; - public JavaClassTest(String s) { - super(s); - } - //contructors public abstract C newJavaClass(); public abstract C newJavaClass(String name); //setters + public abstract void setClasses(C clazz, List<JavaClass> innerClazz); public abstract void setComment(C clazz, String comment); + public abstract void setDeclaringClass( C clazz, JavaClass declaringClazz ); public abstract void setEnum(C clazz, boolean isEnum); public abstract void setFields(C clazz, List<JavaField> fields); public abstract void setImplementz(C clazz, List<DefaultJavaType> implementz); @@ -72,16 +74,16 @@ public abstract void setPackage(JavaSource source, JavaPackage pckg); - public abstract void addClass(JavaClass clazz, JavaClass innerClazz); public abstract void addClass(JavaSource source, JavaClass clazz); - protected void setUp() throws Exception { - super.setUp(); + @Before + public void setUp() throws Exception { src = "" cls = newJavaClass(); addClass(src, cls); } + @Test public void testGetCodeBlockSimpleClass() throws Exception { setName(cls, "MyClass"); String expected = "" @@ -91,6 +93,7 @@ assertEquals(expected, cls.getCodeBlock()); } + @Test public void testGetCodeBlockSimpleInterface() throws Exception { setName(cls, "MyClass"); setInterface(cls, true); @@ -101,6 +104,7 @@ assertEquals(expected, cls.getCodeBlock()); } + @Test public void testGetCodeBlockSimpleEnum() throws Exception { setName(cls, "MyEnum"); setEnum(cls, true); @@ -111,6 +115,7 @@ assertEquals(expected, cls.getCodeBlock()); } + @Test public void testGetCodeBlockClassExtends() throws Exception { setName(cls, "MyClass"); setSuperClass(cls, newType("SuperClass")); @@ -121,6 +126,7 @@ assertEquals(expected, cls.getCodeBlock()); } + @Test public void testGetCodeBlockInterfaceExtends() throws Exception { setName(cls, "MyClass"); setImplementz(cls, type(new String[]{"SomeInterface"})); @@ -132,6 +138,7 @@ assertEquals(expected, cls.getCodeBlock()); } + @Test public void testGetCodeBlockInterfaceExtendsTwo() throws Exception { setName(cls, "MyClass"); setImplementz(cls, type(new String[]{"SomeInterface", "AnotherInterface"})); @@ -143,6 +150,7 @@ assertEquals(expected, cls.getCodeBlock()); } + @Test public void testGetCodeBlockInterfaceExtendsThree() throws Exception { setName(cls, "MyClass"); setImplementz(cls, type(new String[]{"SomeInterface", "AnotherInterface", "Thingy"})); @@ -154,6 +162,7 @@ assertEquals(expected, cls.getCodeBlock()); } + @Test public void testGetCodeBlockClassImplements() throws Exception { setName(cls, "MyClass"); setImplementz(cls, type(new String[]{"SomeInterface"})); @@ -164,6 +173,7 @@ assertEquals(expected, cls.getCodeBlock()); } + @Test public void testGetCodeBlockClassImplementsTwo() throws Exception { setName(cls, "MyClass"); setImplementz(cls, type(new String[]{"SomeInterface", "AnotherInterface", "Xx"})); @@ -174,6 +184,7 @@ assertEquals(expected, cls.getCodeBlock()); } + @Test public void testGetCodeBlockClassImplementsAndExtends() throws Exception { setName(cls, "MyClass"); setImplementz(cls, type(new String[]{"SomeInterface", "AnotherInterface", "Xx"})); @@ -185,6 +196,7 @@ assertEquals(expected, cls.getCodeBlock()); } + @Test public void testGetCodeBlockModifers() throws Exception { setName(cls, "MyClass"); setModifiers(cls, Arrays.asList(new String[]{"public", "final"})); @@ -195,6 +207,7 @@ assertEquals(expected, cls.getCodeBlock()); } + @Test public void testGetCodeBlockModifersProtectionAlwaysFirst() throws Exception { setName(cls, "MyClass"); setModifiers(cls, Arrays.asList(new String[]{"final", "public"})); @@ -212,6 +225,7 @@ assertEquals(expected, cls.getCodeBlock()); } + @Test public void testGetCodeBlockClassWithOneMethod() throws Exception { setName(cls, "MyClass"); JavaMethod mth = mock(JavaMethod.class); @@ -229,6 +243,7 @@ assertEquals(expected, cls.getCodeBlock()); } + @Test public void testGetCodeBlockClassWithThreeMethods() throws Exception { setName(cls, "MyClass"); List<JavaMethod> methods = new ArrayList<JavaMethod>(); @@ -270,6 +285,7 @@ assertEquals(expected, cls.getCodeBlock()); } + @Test public void testGetCodeBlockClassWithTwoFields() throws Exception { setName(cls, "MyClass"); List<JavaField> fields = new ArrayList<JavaField>(); @@ -304,11 +320,12 @@ assertEquals(expected, cls.getCodeBlock()); } + @Test public void testGetCodeBlockClassWithInnerClass() throws Exception { setName(cls, "Outer"); - C innerClass = newJavaClass(); - setName(innerClass, "Inner"); - addClass(cls, innerClass); + JavaClass innerClass = mock( JavaClass.class ); + when( innerClass.getName() ).thenReturn( "Inner" ); + setClasses(cls, Collections.singletonList( innerClass ) ); String expected = "" + "class Outer {\n" @@ -321,12 +338,13 @@ assertEquals(expected, cls.getCodeBlock()); } + @Test public void testGetCodeBlockClassWithInnerEnum() throws Exception { setName(cls, "Outer"); - C innerEnum = newJavaClass(); - setEnum(innerEnum, true); - setName(innerEnum, "Inner"); - addClass(cls, innerEnum); + JavaClass innerEnum = mock( JavaClass.class ); + when( innerEnum.getName() ).thenReturn( "Inner" ); + when( innerEnum.isEnum() ).thenReturn( true ); + setClasses(cls, Collections.singletonList( innerEnum ) ); String expected = "" + "class Outer {\n" @@ -339,12 +357,13 @@ assertEquals(expected, cls.getCodeBlock()); } + @Test public void testGetCodeBlockEnumWithInnerClass() throws Exception { setName(cls, "Outer"); setEnum(cls, true); - C innerClass = newJavaClass(); - setName(innerClass, "Inner"); - addClass(cls, innerClass); + JavaClass innerClass = mock( JavaClass.class ); + when( innerClass.getName() ).thenReturn( "Inner" ); + setClasses(cls, Collections.singletonList( innerClass ) ); String expected = "" + "enum Outer {\n" @@ -357,7 +376,7 @@ assertEquals(expected, cls.getCodeBlock()); } - + @Test public void testGetCodeBlockClassWithComment() throws Exception { setName(cls, "MyClass"); setComment(cls, "Hello World"); @@ -372,6 +391,7 @@ assertEquals(expected, cls.getCodeBlock()); } + @Test public void testGetCodeBlockClassWithIndentedCommentsForFieldAndMethod() throws Exception { setName(cls, "MyClass"); setComment(cls, "Hello World"); @@ -410,6 +430,7 @@ assertEquals(expected, cls.getCodeBlock()); } + @Test public void testIsPublic() { assertTrue( !cls.isPublic() ); @@ -418,6 +439,7 @@ assertTrue( cls.isPublic() ); } + @Test public void testIsProtected() { assertTrue( !cls.isProtected() ); @@ -426,6 +448,7 @@ assertTrue( cls.isProtected() ); } + @Test public void testIsPrivate() { assertTrue( !cls.isPrivate() ); @@ -434,6 +457,7 @@ assertTrue( cls.isPrivate() ); } + @Test public void testIsAbstract() { assertTrue( !cls.isAbstract() ); @@ -442,6 +466,7 @@ assertTrue( cls.isAbstract() ); } + @Test public void testIsFinal() { assertTrue( !cls.isFinal() ); @@ -450,6 +475,7 @@ assertTrue( cls.isFinal() ); } + @Test public void testIsStatic() { assertTrue( !cls.isStatic() ); @@ -458,6 +484,7 @@ assertTrue( cls.isStatic() ); } + @Test public void testQualifiedType() throws Exception { setPackage(src, newJavaPackage("com.thoughtworks.qdox")); @@ -470,30 +497,40 @@ cls.getFullyQualifiedName()); } + @Test public void testGetClassNamePrefix() { setPackage(src, newJavaPackage("foo.bar")); setName(cls, "Stanley"); assertEquals("foo.bar.Stanley$", cls.getClassNamePrefix()); } - public void testInnerClass() throws Exception { - setPackage(src, newJavaPackage("foo.bar")); + @Test + public void testInnerClass() throws Exception + { + JavaPackage pkg = mock(JavaPackage.class); + when(pkg.getName()).thenReturn( "foo.bar" ); - C outer = newJavaClass(); - setName(outer, "Outer"); - addClass(src, outer); + JavaClass outer = mock( JavaClass.class ); + when( outer.getName() ).thenReturn( "Outer" ); + when( outer.getPackageName() ).thenReturn( "foo.bar" ); + when( outer.getClassNamePrefix() ).thenReturn( "foo.bar.Outer$" ); C inner = newJavaClass(); setName(inner, "Inner"); - addClass(outer, inner); - + setPackage( inner, pkg ); + setDeclaringClass( inner, outer ); + + assertEquals("Inner", inner.getName()); - assertEquals("foo.bar", inner.getPackage().getName()); assertEquals("foo.bar", inner.getPackageName()); - assertEquals("foo.bar.Outer$Inner", - inner.getFullyQualifiedName()); + assertEquals("foo.bar.Outer$Inner", inner.getFullyQualifiedName()); + + assertEquals("Inner", inner.getName()); + assertEquals("foo.bar", inner.getPackageName()); + assertEquals("foo.bar.Outer$Inner", inner.getFullyQualifiedName()); } + @Test public void testDefaultPackageClass() { setPackage(src, null); setName(cls, "DefaultPackageClass"); @@ -502,6 +539,7 @@ assertEquals("DefaultPackageClass", src.getClasses().get(0).getFullyQualifiedName()); } + @Test public void testDefaultClassSuperclass() throws Exception { setName(cls, "MyClass"); assertEquals("java.lang.Object", cls.getSuperClass().getValue()); @@ -509,6 +547,7 @@ assertEquals("x.X", cls.getSuperClass().getValue()); } + @Test public void testDefaultInterfaceSuperclass() throws Exception { setName(cls, "MyInterface"); setInterface(cls, true); @@ -517,12 +556,14 @@ assertEquals("x.X", cls.getSuperClass().getValue()); } + @Test public void testEnumSuperclass() throws Exception { setName(cls, "MyEnum"); setEnum(cls, true); assertEquals("java.lang.Enum", cls.getSuperClass().getValue()); } + @Test public void testEnumCannotExtendAnythingElse() throws Exception { setName(cls, "MyEnum"); setEnum(cls, true); @@ -534,6 +575,7 @@ } } + @Test public void testGetEnumConstants() { setName( cls, "MyEnum" ); assertNull( cls.getEnumConstants() ); @@ -555,6 +597,7 @@ assertEquals( 1, cls.getEnumConstants().size() ); } + @Test public void testGetEnumConstantByName() { setName( cls, "MyEnum" ); @@ -573,7 +616,7 @@ assertEquals( enumConstantField, cls.getEnumConstantByName( "enumField" ) ); } - + @Test public void testCanGetFieldByName() throws Exception { JavaField fredField = mock(JavaField.class); when(fredField.getName()).thenReturn( "fred" ); @@ -586,6 +629,7 @@ assertEquals(null, cls.getFieldByName("barney")); } + @Test public void testCanGetMethodBySignature() { final String methodName = "doStuff"; final List<JavaType> parameterTypes = javaType(new String[]{"int", "double"}); @@ -610,34 +654,42 @@ ); } - public void testCanGetInnerClassByName() throws Exception { - C innerClass = newJavaClass(); - setName(innerClass, "Inner"); - addClass(cls, innerClass); + @Test + public void testCanGetInnerClassByName() throws Exception + { + JavaClass innerClass = mock( JavaClass.class ); + when( innerClass.getName() ).thenReturn( "Inner" ); + setClasses(cls, Collections.singletonList( innerClass ) ); assertEquals(innerClass, cls.getNestedClassByName("Inner")); assertEquals(null, cls.getNestedClassByName("Bogus")); } + @Test public void testResolveTypeDefaultsToParentScope() throws Exception { setName(cls, "X"); assertEquals("int", cls.resolveType("int")); } + @Test public void testResolveTypeInnerClass() throws Exception { setPackage(src, newJavaPackage("p")); setName(cls, "X"); - C innerClass = newJavaClass(); - setName(innerClass, "DogFood"); - addClass(cls, innerClass); + JavaClass innerClass = mock(JavaClass.class ); + when( innerClass.getName() ).thenReturn( "DogFood" ); + when( innerClass.getFullyQualifiedName() ).thenReturn( "p.X$DogFood" ); + setClasses(cls, Collections.singletonList( innerClass ) ); + assertEquals("p.X$DogFood", cls.resolveType("DogFood")); assertEquals(null, cls.resolveType("Food")); } + @Test public void testGetBeanPropertiesReturnsEmptyForEmptyClass() throws Exception { assertEquals(0, cls.getBeanProperties().size()); } + @Test public void testGetBeanPropertiesFindsSimpleProperties() throws Exception { List<JavaMethod> methods = new ArrayList<JavaMethod>(); JavaMethod setFooMethod = mock(JavaMethod.class); @@ -668,50 +720,70 @@ assertEquals(setFooMethod, fooProp.getMutator()); } + @Test public void testToStringClass() { setName(cls, "com.MyClass"); assertEquals("class com.MyClass", cls.toString()); } + @Test public void testInnerClassToString() throws Exception { - JavaPackage jPackage = newJavaPackage("com.thoughtworks.qdox.model"); - C jOuterClass = newJavaClass("OuterClass"); - setPackage(jOuterClass, jPackage); - C jInnerClass = newJavaClass("InnerClass"); - addClass(jOuterClass, jInnerClass); + JavaClass jOuterClass = mock(JavaClass.class); + when(jOuterClass.getClassNamePrefix()).thenReturn( "com.thoughtworks.qdox.model.OuterClass$" ); + + C jInnerClass = newJavaClass( "InnerClass" ); + setDeclaringClass( jInnerClass, jOuterClass ); + assertEquals("class com.thoughtworks.qdox.model.OuterClass$InnerClass", jInnerClass.toString()); } + @Test public void testInnerClassType() { - JavaPackage jPackage = newJavaPackage("com.thoughtworks.qdox.model"); - C jOuterClass = newJavaClass("OuterClass"); - setPackage( jOuterClass, jPackage ); - JavaClass jInnerClass = newJavaClass("InnerClass"); - addClass(jOuterClass, jInnerClass); + JavaClass jOuterClass = mock(JavaClass.class); + when(jOuterClass.getClassNamePrefix()).thenReturn("com.thoughtworks.qdox.model.OuterClass$"); + + C jInnerClass = newJavaClass("InnerClass"); + setDeclaringClass( jInnerClass, jOuterClass ); + assertEquals( "com.thoughtworks.qdox.model.OuterClass$InnerClass", jInnerClass.getFullyQualifiedName() ); } + @Test public void testInnerInterfaceToString() { - JavaPackage jPackage = newJavaPackage("com.thoughtworks.qdox.model"); - C jOuterClass = newJavaClass("OuterClass"); - setPackage( jOuterClass, jPackage ); - C jInnerInterface = newJavaClass("InnerInterface"); - setInterface(jInnerInterface, true); - addClass(jOuterClass, jInnerInterface); + JavaClass jOuterClass = mock(JavaClass.class); + when(jOuterClass.getClassNamePrefix()).thenReturn( "com.thoughtworks.qdox.model.OuterClass$"); + + C jInnerInterface = newJavaClass( "InnerInterface" ); + setInterface( jInnerInterface, true ); + setDeclaringClass( jInnerInterface, jOuterClass ); + assertEquals("interface com.thoughtworks.qdox.model.OuterClass$InnerInterface", jInnerInterface.toString()); } + @Test public void testToStringInterface() { setName(cls, "com.MyClass"); setInterface(cls, true); assertEquals("interface com.MyClass", cls.toString()); } - + @Test + public void testEquals() + { + C c1 = newJavaClass( "java.util.String" ); + C c2 = newJavaClass( "java.util.String" ); + C c3 = newJavaClass( "org.mycompany.String" ); + assertEquals( c1, c1 ); + assertThat( c1, not( new Object() ) ); + assertEquals( c1, c2 ); + assertThat( c1, not( c3 ) ); + } + /** * @codehaus.jira QDOX-59 */ + @Test public void testBeanPropertiesAreReturnedInOrderDeclared() { List<JavaMethod> methods = new ArrayList<JavaMethod>(); JavaMethod getFooMethod = mock(JavaMethod.class); @@ -759,6 +831,7 @@ } // QDOX-201 + @Test public void testGetVarArgMethodSignature() { List<JavaMethod> methods = new ArrayList<JavaMethod>(); JavaMethod simpleMethod = mock(JavaMethod.class);
Modified: trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaConstructorTest.java (1445 => 1446)
--- trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaConstructorTest.java 2011-10-26 19:27:11 UTC (rev 1445) +++ trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaConstructorTest.java 2011-10-26 20:45:41 UTC (rev 1446) @@ -92,6 +92,8 @@ D c4 = newJavaConstructor( "Thong" ); setParentClass( c4, mock( JavaClass.class ) ); + assertEquals( c1, c1 ); + assertThat( c1, not( new Object() ) ); assertThat( c1, not(c2) ); assertEquals( c2, c3 ); assertThat( c3, not(c4) );
Modified: trunk/qdox/src/test/java/com/thoughtworks/qdox/model/impl/DefaultJavaClassTest.java (1445 => 1446)
--- trunk/qdox/src/test/java/com/thoughtworks/qdox/model/impl/DefaultJavaClassTest.java 2011-10-26 19:27:11 UTC (rev 1445) +++ trunk/qdox/src/test/java/com/thoughtworks/qdox/model/impl/DefaultJavaClassTest.java 2011-10-26 20:45:41 UTC (rev 1446) @@ -16,11 +16,6 @@ extends JavaClassTest<DefaultJavaClass> { - public DefaultJavaClassTest( String s ) - { - super( s ); - } - public DefaultJavaClass newJavaClass() { return new DefaultJavaClass(); @@ -37,10 +32,12 @@ } // Add-methods - public void addClass( JavaClass clazz, JavaClass innerClazz ) + public void setClasses( DefaultJavaClass clazz, List<JavaClass> innerClasses ) { - ((DefaultJavaClass) clazz).addClass( innerClazz ); - ((DefaultJavaClass) innerClazz).setParentClass( clazz ); + for( JavaClass innerClazz : innerClasses ) + { + clazz.addClass( innerClazz ); + } } public void addClass( JavaSource source, JavaClass clazz ) @@ -54,6 +51,13 @@ { clazz.setComment( comment ); } + + @Override + public void setDeclaringClass( DefaultJavaClass clazz, JavaClass declaringClazz ) + { + clazz.setParentClass( declaringClazz ); + + } public void setEnum( DefaultJavaClass clazz, boolean isEnum ) {
To unsubscribe from this list please visit:
