package org.apache.maven.plugin;
/*
* LICENSE
*/
import com.thoughtworks.qdox.model.JavaField;
import java.util.List;
import org.codehaus.plexus.PlexusTestCase;
import junit.framework.TestCase;
/**
* @author <a href="mailto:trygvis@inamo.no">Trygve Laugstøl</a>
* @version $Id$
*/
public class ApiClassTest
extends TestCase
{
private ApiDocsPlugin plugin;
public void setUp()
throws Exception
{
plugin = new ApiDocsPlugin();
plugin.setSourceDirectory( PlexusTestCase.getTestFile( "src/test/test-source" ) );
plugin.setOutputDirectory( PlexusTestCase.getTestFile( "target/test-output" ) );
plugin.initializeSources();
}
public void testName()
throws Exception
{
ApiClass clazz = getClass( "mypackage.FooClass" );
// name
assertEquals( "FooClass", clazz.getName() );
assertEquals( "mypackage.FooClass", clazz.getFullName() );
assertEquals( "mypackage", clazz.getPackage() );
}
public void testParents()
{
ApiClass clazz = getClass( "mypackage.FooClass" );
assertEquals( "TopLevelClass", clazz.getSuperClassName() );
List parents = clazz.getParents();
assertEquals( 2, parents.size() );
assertEquals( "TopLevelClass", ((ApiClass)parents.get( 0 )).getFullName() );
assertEquals( "java.lang.Object", ((ApiClass)parents.get( 1 )).getFullName() );
List parentsReversed = clazz.getParentsReversed();
assertEquals( 2, parentsReversed.size() );
assertEquals( "java.lang.Object", ((ApiClass)parentsReversed.get( 0 )).getFullName() );
assertEquals( "TopLevelClass", ((ApiClass)parentsReversed.get( 1 )).getFullName() );
}
public void testInterfaces()
{
ApiClass clazz = getClass( "mypackage.FooClass" );
// interfaces
List interfaces = clazz.getInterfaces();
assertEquals( 2, interfaces.size() );
assertEquals( "Interface1", ((ApiClass)interfaces.get( 0 )).getName() );
assertEquals( "Interface2", ((ApiClass)interfaces.get( 1 )).getName() );
assertEquals( "Interface1, Interface2", clazz.getInterfacesAsString() );
}
public void testClassDocs()
{
ApiClass clazz = getClass( "mypackage.FooClass" );
assertEquals( "Author 1, Author 2, <a href=\"mailto:foo@bar.com\">Email Author</a>", clazz.getAuthorsAsString() );
assertEquals( "Interface2, TopLevelClass, java.lang.Object", clazz.getSeeAlsoAsString() );
}
public void testFields()
{
ApiClass clazz = getClass( "mypackage.FooClass" );
List fields = clazz.getFields();
assertEquals( 4, fields.size() );
assertEquals( "privateInt", ((JavaField)fields.get( 0 )).getName() );
assertEquals( "protectedInt", ((JavaField)fields.get( 1 )).getName() );
assertEquals( "publicInt", ((JavaField)fields.get( 2 )).getName() );
assertEquals( "bleh", ((JavaField)fields.get( 3 )).getName() );
}
public void testMisc()
{
ApiClass clazz = getClass( "mypackage.FooClass" );
assertFalse( clazz.isInterface() );
assertTrue( clazz.isPublic() );
}
public void testInterface1()
{
ApiClass clazz = getClass( "mypackage.Interface1" );
assertTrue( clazz.isInterface() );
assertTrue( clazz.isPublic() );
}
public void testInterface2()
{
ApiClass clazz = getClass( "mypackage.Interface2" );
assertTrue( clazz.isInterface() );
assertFalse( clazz.isPublic() );
}
public void testJavaLangObject()
{
ApiClass clazz = getClass( "java.lang.Object" );
assertEquals( "", clazz.getSuperClassName() );
assertEquals( 0, clazz.getInterfaces().size() );
assertEquals( 0, clazz.getParents().size() );
}
private ApiClass getClass( String className )
{
ApiClass clazz = plugin.getApiClass( className );
assertNotNull( clazz );
return clazz;
}
}