package com.github.markusbernhardt.xmldoclet;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import com.github.markusbernhardt.xmldoclet.simpledata.Annotation1;
import com.github.markusbernhardt.xmldoclet.simpledata.Annotation2;
import com.github.markusbernhardt.xmldoclet.simpledata.Annotation3;
import com.github.markusbernhardt.xmldoclet.xjc.Annotation;
import com.github.markusbernhardt.xmldoclet.xjc.AnnotationElement;
import com.github.markusbernhardt.xmldoclet.xjc.AnnotationInstance;
import com.github.markusbernhardt.xmldoclet.xjc.Package;
import com.github.markusbernhardt.xmldoclet.xjc.Root;
/**
* Unit test group for Annotations
*/
@SuppressWarnings("deprecation")
public class AnnotationTest extends AbstractTestParent {
/**
* Rigourous Parser :-)
*/
@Test
public void testSampledoc() {
executeJavadoc(null, new String[] { "./src/test/java" }, null, null, new String[] { "com" },
new String[] { "-dryrun" });
}
/**
* testing an annotation with nothing defined
*/
@Test
public void testAnnotation1() {
String[] sourceFiles = new String[] { "./src/test/java/com/github/markusbernhardt/xmldoclet/simpledata/Annotation1.java" };
Root rootNode = executeJavadoc(null, null, null, sourceFiles, null, new String[] { "-dryrun" });
Package packageNode = rootNode.getPackage().get(0);
Annotation annotationNode = packageNode.getAnnotation().get(0);
assertEquals(rootNode.getPackage().size(), 1);
assertEquals(packageNode.getComment(), null);
assertEquals(packageNode.getName(), "com.github.markusbernhardt.xmldoclet.simpledata");
assertEquals(packageNode.getAnnotation().size(), 1);
assertEquals(packageNode.getEnum().size(), 0);
assertEquals(packageNode.getInterface().size(), 0);
assertEquals(packageNode.getClazz().size(), 0);
assertEquals(annotationNode.getComment(), "Annotation1");
assertEquals(annotationNode.getName(), Annotation1.class.getSimpleName());
assertEquals(annotationNode.getQualified(), Annotation1.class.getName());
assertEquals(annotationNode.getScope(), "public");
assertEquals(annotationNode.getAnnotation().size(), 0);
assertEquals(annotationNode.getElement().size(), 0);
assertTrue(annotationNode.isIncluded());
}
/**
* testing an annotation with an annotation decorating it
*/
@Test
public void testAnnotation2() {
String[] sourceFiles = new String[] { "./src/test/java/com/github/markusbernhardt/xmldoclet/simpledata/Annotation2.java" };
Root rootNode = executeJavadoc(null, null, null, sourceFiles, null, new String[] { "-dryrun" });
Package packageNode = rootNode.getPackage().get(0);
Annotation annotationNode = packageNode.getAnnotation().get(0);
AnnotationInstance annotationInstance = annotationNode.getAnnotation().get(0);
assertEquals(rootNode.getPackage().size(), 1);
assertEquals(packageNode.getComment(), null);
assertEquals(packageNode.getName(), "com.github.markusbernhardt.xmldoclet.simpledata");
assertEquals(packageNode.getAnnotation().size(), 1);
assertEquals(packageNode.getEnum().size(), 0);
assertEquals(packageNode.getInterface().size(), 0);
assertEquals(packageNode.getClazz().size(), 0);
assertEquals(annotationNode.getComment(), "Annotation2");
assertEquals(annotationNode.getName(), Annotation2.class.getSimpleName());
assertEquals(annotationNode.getQualified(), Annotation2.class.getName());
assertEquals(annotationNode.getScope(), "public");
assertEquals(annotationNode.getAnnotation().size(), 1);
assertEquals(annotationNode.getElement().size(), 0);
assertTrue(annotationNode.isIncluded());
// test annotation 'deprecated' on class
assertEquals(annotationInstance.getQualified(), "java.lang.Deprecated");
assertEquals(annotationInstance.getName(), "Deprecated");
assertEquals(annotationInstance.getArgument().size(), 0);
}
/**
* testing an annotation with one element field
*/
@Test
public void testAnnotation3() {
String[] sourceFiles = new String[] { "./src/test/java/com/github/markusbernhardt/xmldoclet/simpledata/Annotation3.java" };
Root rootNode = executeJavadoc(null, null, null, sourceFiles, null, new String[] { "-dryrun" });
Package packageNode = rootNode.getPackage().get(0);
Annotation annotationNode = packageNode.getAnnotation().get(0);
AnnotationElement element = annotationNode.getElement().get(0);
assertEquals(rootNode.getPackage().size(), 1);
assertEquals(packageNode.getComment(), null);
assertEquals(packageNode.getName(), "com.github.markusbernhardt.xmldoclet.simpledata");
assertEquals(packageNode.getAnnotation().size(), 1);
assertEquals(packageNode.getEnum().size(), 0);
assertEquals(packageNode.getInterface().size(), 0);
assertEquals(packageNode.getClazz().size(), 0);
assertEquals(annotationNode.getComment(), "Annotation3");
assertEquals(annotationNode.getName(), Annotation3.class.getSimpleName());
assertEquals(annotationNode.getQualified(), Annotation3.class.getName());
assertEquals(annotationNode.getScope(), "public");
assertEquals(annotationNode.getAnnotation().size(), 0);
assertEquals(annotationNode.getElement().size(), 1);
assertTrue(annotationNode.isIncluded());
// test annotation element
assertEquals(element.getName(), "id");
assertEquals(element.getQualified(), "com.github.markusbernhardt.xmldoclet.simpledata.Annotation3.id");
assertEquals(element.getType().getQualified(), "int");
assertEquals(element.getDefault(), Integer.toString(3));
}
/**
* testing an annotation with non-public definition
*/
@Test
public void testAnnotation4() {
String[] sourceFiles = new String[] { "./src/test/java/com/github/markusbernhardt/xmldoclet/simpledata/Annotation4.java" };
Root rootNode = executeJavadoc(null, null, null, sourceFiles, null, new String[] { "-dryrun" });
Package packageNode = rootNode.getPackage().get(0);
Annotation annotationNode = packageNode.getAnnotation().get(0);
assertEquals(rootNode.getPackage().size(), 1);
assertEquals(packageNode.getComment(), null);
assertEquals(packageNode.getName(), "com.github.markusbernhardt.xmldoclet.simpledata");
assertEquals(packageNode.getAnnotation().size(), 1);
assertEquals(packageNode.getEnum().size(), 0);
assertEquals(packageNode.getInterface().size(), 0);
assertEquals(packageNode.getClazz().size(), 0);
assertEquals(annotationNode.getComment(), "Annotation4");
assertEquals(annotationNode.getName(), "Annotation4");
assertEquals(annotationNode.getQualified(), "com.github.markusbernhardt.xmldoclet.simpledata.Annotation4");
assertEquals(annotationNode.getScope(), "");
assertEquals(annotationNode.getAnnotation().size(), 0);
assertEquals(annotationNode.getElement().size(), 0);
assertTrue(annotationNode.isIncluded());
}
}