package com.github.markusbernhardt.xmldoclet;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import com.github.markusbernhardt.xmldoclet.simpledata.Interface1;
import com.github.markusbernhardt.xmldoclet.simpledata.Interface2;
import com.github.markusbernhardt.xmldoclet.simpledata.Interface3;
import com.github.markusbernhardt.xmldoclet.simpledata.Interface4;
import com.github.markusbernhardt.xmldoclet.xjc.AnnotationInstance;
import com.github.markusbernhardt.xmldoclet.xjc.Interface;
import com.github.markusbernhardt.xmldoclet.xjc.Method;
import com.github.markusbernhardt.xmldoclet.xjc.Package;
import com.github.markusbernhardt.xmldoclet.xjc.Root;
import com.github.markusbernhardt.xmldoclet.xjc.TypeParameter;
/**
* Unit test group for Interfaces
*/
@SuppressWarnings("deprecation")
public class InterfaceTest extends AbstractTestParent {
/**
* Rigourous Parser :-)
*/
@Test
public void testSampledoc() {
executeJavadoc(".", new String[] { "./src/test/java" }, null, null, new String[] { "com" },
new String[] { "-dryrun" });
}
/**
* testing a interface with nothing defined
*/
@Test
public void testInterface1() {
String[] sourceFiles = new String[] { "./src/test/java/com/github/markusbernhardt/xmldoclet/simpledata/Interface1.java" };
Root rootNode = executeJavadoc(null, null, null, sourceFiles, null, new String[] { "-dryrun" });
Package packageNode = rootNode.getPackage().get(0);
Interface interfaceNode = packageNode.getInterface().get(0);
assertEquals(rootNode.getPackage().size(), 1);
assertNull(packageNode.getComment());
assertEquals(packageNode.getName(), "com.github.markusbernhardt.xmldoclet.simpledata");
assertEquals(packageNode.getAnnotation().size(), 0);
assertEquals(packageNode.getEnum().size(), 0);
assertEquals(packageNode.getInterface().size(), 1);
assertEquals(packageNode.getClazz().size(), 0);
assertEquals(interfaceNode.getComment(), "Interface1");
assertEquals(interfaceNode.getName(), Interface1.class.getSimpleName());
assertEquals(interfaceNode.getQualified(), Interface1.class.getName());
assertEquals(interfaceNode.getScope(), "public");
assertEquals(interfaceNode.getMethod().size(), 0);
assertEquals(interfaceNode.getAnnotation().size(), 0);
assertEquals(interfaceNode.getInterface().size(), 0);
assertTrue(interfaceNode.isIncluded());
}
/**
* testing a interface with 1 method
*/
@Test
public void testInterface2() {
String[] sourceFiles = new String[] { "./src/test/java/com/github/markusbernhardt/xmldoclet/simpledata/Interface2.java" };
Root rootNode = executeJavadoc(null, null, null, sourceFiles, null, new String[] { "-dryrun" });
Package packageNode = rootNode.getPackage().get(0);
Interface interfaceNode = packageNode.getInterface().get(0);
Method method = interfaceNode.getMethod().get(0);
assertEquals(rootNode.getPackage().size(), 1);
assertNull(packageNode.getComment());
assertEquals(packageNode.getName(), "com.github.markusbernhardt.xmldoclet.simpledata");
assertEquals(packageNode.getAnnotation().size(), 0);
assertEquals(packageNode.getEnum().size(), 0);
assertEquals(packageNode.getInterface().size(), 1);
assertEquals(packageNode.getClazz().size(), 0);
assertEquals(interfaceNode.getComment(), "Interface2");
assertEquals(interfaceNode.getName(), Interface2.class.getSimpleName());
assertEquals(interfaceNode.getQualified(), Interface2.class.getName());
assertEquals(interfaceNode.getScope(), "public");
assertEquals(interfaceNode.getMethod().size(), 1);
assertEquals(interfaceNode.getAnnotation().size(), 0);
assertEquals(interfaceNode.getInterface().size(), 0);
assertTrue(interfaceNode.isIncluded());
// verify method
assertEquals(method.getComment(), "method1");
assertEquals(method.getName(), "method1");
assertEquals(method.getSignature(), "()");
assertFalse(method.isFinal());
assertFalse(method.isNative());
assertFalse(method.isStatic());
assertFalse(method.isSynchronized());
assertFalse(method.isVarArgs());
assertEquals(method.getQualified(), "com.github.markusbernhardt.xmldoclet.simpledata.Interface2.method1");
assertEquals(method.getScope(), "public");
assertEquals(method.getAnnotation().size(), 0);
assertEquals(method.getParameter().size(), 0);
assertEquals(method.getException().size(), 0);
}
/**
* testing a interface that extends another interface
*/
@Test
public void testInterface3() {
String[] sourceFiles = new String[] { "./src/test/java/com/github/markusbernhardt/xmldoclet/simpledata/Interface3.java" };
Root rootNode = executeJavadoc(null, null, null, sourceFiles, null, new String[] { "-dryrun" });
Package packageNode = rootNode.getPackage().get(0);
Interface interfaceNode = packageNode.getInterface().get(0);
assertEquals(rootNode.getPackage().size(), 1);
assertNull(packageNode.getComment());
assertEquals(packageNode.getName(), "com.github.markusbernhardt.xmldoclet.simpledata");
assertEquals(packageNode.getAnnotation().size(), 0);
assertEquals(packageNode.getEnum().size(), 0);
assertEquals(packageNode.getInterface().size(), 1);
assertEquals(packageNode.getClazz().size(), 0);
assertEquals(interfaceNode.getComment(), "Interface3");
assertEquals(interfaceNode.getName(), Interface3.class.getSimpleName());
assertEquals(interfaceNode.getQualified(), Interface3.class.getName());
assertEquals(interfaceNode.getScope(), "public");
assertEquals(interfaceNode.getMethod().size(), 0);
assertEquals(interfaceNode.getAnnotation().size(), 0);
assertEquals(interfaceNode.getInterface().size(), 1);
assertTrue(interfaceNode.isIncluded());
// verify interface
assertEquals(interfaceNode.getInterface().get(0).getQualified(), java.io.Serializable.class.getName());
}
/**
* testing a interface that implements one annotation
*/
@Test
public void testInterface4() {
String[] sourceFiles = new String[] { "./src/test/java/com/github/markusbernhardt/xmldoclet/simpledata/Interface4.java" };
Root rootNode = executeJavadoc(null, null, null, sourceFiles, null, new String[] { "-dryrun" });
Package packageNode = rootNode.getPackage().get(0);
Interface interfaceNode = packageNode.getInterface().get(0);
AnnotationInstance annotationInstanceNode = interfaceNode.getAnnotation().get(0);
assertEquals(rootNode.getPackage().size(), 1);
assertNull(packageNode.getComment());
assertEquals(packageNode.getName(), "com.github.markusbernhardt.xmldoclet.simpledata");
assertEquals(packageNode.getAnnotation().size(), 0);
assertEquals(packageNode.getEnum().size(), 0);
assertEquals(packageNode.getInterface().size(), 1);
assertEquals(packageNode.getClazz().size(), 0);
assertEquals(interfaceNode.getComment(), "Interface4");
assertEquals(interfaceNode.getName(), Interface4.class.getSimpleName());
assertEquals(interfaceNode.getQualified(), Interface4.class.getName());
assertEquals(interfaceNode.getScope(), "public");
assertEquals(interfaceNode.getMethod().size(), 0);
assertEquals(interfaceNode.getAnnotation().size(), 1);
assertEquals(interfaceNode.getInterface().size(), 0);
assertTrue(interfaceNode.isIncluded());
// verify deprecated annotation
// test annotation 'deprecated' on class
assertEquals(annotationInstanceNode.getQualified(), "java.lang.Deprecated");
assertEquals(annotationInstanceNode.getName(), "Deprecated");
assertEquals(annotationInstanceNode.getArgument().size(), 0);
}
/**
* testing a interface that is abstract
*/
@Test
public void testInterface5() {
String[] sourceFiles = new String[] { "./src/test/java/com/github/markusbernhardt/xmldoclet/simpledata/Interface5.java" };
Root rootNode = executeJavadoc(null, null, null, sourceFiles, null, new String[] { "-dryrun" });
Package packageNode = rootNode.getPackage().get(0);
Interface interfaceNode = packageNode.getInterface().get(0);
Method method = interfaceNode.getMethod().get(0);
assertEquals(rootNode.getPackage().size(), 1);
assertNull(packageNode.getComment());
assertEquals(packageNode.getName(), "com.github.markusbernhardt.xmldoclet.simpledata");
assertEquals(packageNode.getAnnotation().size(), 0);
assertEquals(packageNode.getEnum().size(), 0);
assertEquals(packageNode.getInterface().size(), 1);
assertEquals(packageNode.getClazz().size(), 0);
assertEquals(interfaceNode.getComment(), "Interface5");
assertEquals(interfaceNode.getName(), "Interface5");
assertEquals(interfaceNode.getQualified(), "com.github.markusbernhardt.xmldoclet.simpledata.Interface5");
assertEquals(interfaceNode.getScope(), "");
assertEquals(interfaceNode.getMethod().size(), 1);
assertEquals(interfaceNode.getAnnotation().size(), 0);
assertEquals(interfaceNode.getInterface().size(), 0);
assertTrue(interfaceNode.isIncluded());
// verify method
assertEquals(method.getComment(), "method1");
assertEquals(method.getName(), "method1");
assertEquals(method.getSignature(), "()");
assertFalse(method.isFinal());
assertFalse(method.isNative());
assertFalse(method.isStatic());
assertFalse(method.isSynchronized());
assertFalse(method.isVarArgs());
assertEquals(method.getQualified(), "com.github.markusbernhardt.xmldoclet.simpledata.Interface5.method1");
// all interface methods are public
assertEquals(method.getScope(), "public");
assertEquals(method.getAnnotation().size(), 0);
assertEquals(method.getParameter().size(), 0);
assertEquals(method.getException().size(), 0);
}
/**
* testing a interface that has a type variable
*/
@Test
public void testInterface6() {
String[] sourceFiles = new String[] { "./src/test/java/com/github/markusbernhardt/xmldoclet/simpledata/Interface6.java" };
Root rootNode = executeJavadoc(null, null, null, sourceFiles, null, new String[] { "-dryrun" });
Package packageNode = rootNode.getPackage().get(0);
Interface interfaceNode = packageNode.getInterface().get(0);
TypeParameter typeParameterNode = interfaceNode.getGeneric().get(0);
assertEquals(rootNode.getPackage().size(), 1);
assertNull(packageNode.getComment());
assertEquals(packageNode.getName(), "com.github.markusbernhardt.xmldoclet.simpledata");
assertEquals(packageNode.getAnnotation().size(), 0);
assertEquals(packageNode.getEnum().size(), 0);
assertEquals(packageNode.getInterface().size(), 1);
assertEquals(packageNode.getClazz().size(), 0);
assertEquals(interfaceNode.getComment(), "Interface6");
assertEquals(interfaceNode.getName(), "Interface6");
assertEquals(interfaceNode.getQualified(), "com.github.markusbernhardt.xmldoclet.simpledata.Interface6");
assertEquals(interfaceNode.getScope(), "public");
assertEquals(interfaceNode.getMethod().size(), 0);
assertEquals(interfaceNode.getAnnotation().size(), 0);
assertEquals(interfaceNode.getInterface().size(), 0);
assertTrue(interfaceNode.isIncluded());
assertEquals(typeParameterNode.getName(), "Fun");
assertEquals(typeParameterNode.getBound().size(), 0);
}
/**
* testing a interface that has a type variable with extends
*/
@Test
public void testInterface7() {
String[] sourceFiles = new String[] { "./src/test/java/com/github/markusbernhardt/xmldoclet/simpledata/Interface7.java" };
Root rootNode = executeJavadoc(null, null, null, sourceFiles, null, new String[] { "-dryrun" });
Package packageNode = rootNode.getPackage().get(0);
Interface interfaceNode = packageNode.getInterface().get(0);
TypeParameter typeParameterNode = interfaceNode.getGeneric().get(0);
assertEquals(rootNode.getPackage().size(), 1);
assertNull(packageNode.getComment());
assertEquals(packageNode.getName(), "com.github.markusbernhardt.xmldoclet.simpledata");
assertEquals(packageNode.getAnnotation().size(), 0);
assertEquals(packageNode.getEnum().size(), 0);
assertEquals(packageNode.getInterface().size(), 1);
assertEquals(packageNode.getClazz().size(), 0);
assertEquals(interfaceNode.getComment(), "Interface7");
assertEquals(interfaceNode.getName(), "Interface7");
assertEquals(interfaceNode.getQualified(), "com.github.markusbernhardt.xmldoclet.simpledata.Interface7");
assertEquals(interfaceNode.getScope(), "public");
assertEquals(interfaceNode.getMethod().size(), 0);
assertEquals(interfaceNode.getAnnotation().size(), 0);
assertEquals(interfaceNode.getInterface().size(), 0);
assertTrue(interfaceNode.isIncluded());
assertEquals(typeParameterNode.getBound().size(), 1);
assertEquals(typeParameterNode.getBound().get(0), "java.lang.Number");
}
/**
* testing a interface that has a type variable with extends of a class and
* interface
*/
@Test
public void testInterface8() {
String[] sourceFiles = new String[] { "./src/test/java/com/github/markusbernhardt/xmldoclet/simpledata/Interface8.java" };
Root rootNode = executeJavadoc(null, null, null, sourceFiles, null, new String[] { "-dryrun" });
Package packageNode = rootNode.getPackage().get(0);
Interface interfaceNode = packageNode.getInterface().get(0);
TypeParameter typeParameterNode = interfaceNode.getGeneric().get(0);
assertEquals(rootNode.getPackage().size(), 1);
assertNull(packageNode.getComment());
assertEquals(packageNode.getName(), "com.github.markusbernhardt.xmldoclet.simpledata");
assertEquals(packageNode.getAnnotation().size(), 0);
assertEquals(packageNode.getEnum().size(), 0);
assertEquals(packageNode.getInterface().size(), 1);
assertEquals(packageNode.getClazz().size(), 0);
assertEquals(interfaceNode.getComment(), "Interface8");
assertEquals(interfaceNode.getName(), "Interface8");
assertEquals(interfaceNode.getQualified(), "com.github.markusbernhardt.xmldoclet.simpledata.Interface8");
assertEquals(interfaceNode.getScope(), "public");
assertEquals(interfaceNode.getMethod().size(), 0);
assertEquals(interfaceNode.getAnnotation().size(), 0);
assertEquals(interfaceNode.getInterface().size(), 0);
assertTrue(interfaceNode.isIncluded());
assertEquals(typeParameterNode.getBound().size(), 2);
assertEquals(typeParameterNode.getBound().get(0), "java.lang.Number");
assertEquals(typeParameterNode.getBound().get(1), "java.lang.Runnable");
}
}