package spoon.test.javadoc; import org.junit.Test; import spoon.Launcher; import spoon.SpoonAPI; import spoon.reflect.code.CtComment; import spoon.reflect.declaration.CtClass; import spoon.reflect.declaration.CtElement; import spoon.reflect.factory.Factory; import spoon.reflect.visitor.CtScanner; import spoon.test.javadoc.testclasses.Bar; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; public class JavaDocTest { @Test public void testJavaDocReprint() throws Exception { SpoonAPI launcher = new Launcher(); launcher.getEnvironment().setAutoImports(true); launcher.getEnvironment().setNoClasspath(true); launcher.getEnvironment().setCommentEnabled(true); launcher.getEnvironment().setCopyResources(false); launcher.addInputResource("./src/test/java/spoon/test/javadoc/testclasses/"); launcher.setSourceOutputDirectory("./target/spooned/"); launcher.run(); Factory factory = launcher.getFactory(); CtClass<?> aClass = factory.Class().get(Bar.class); assertEquals("public class Bar {" + System.lineSeparator() + " /**" + System.lineSeparator() + " * Creates an annotation type." + System.lineSeparator() + " *" + System.lineSeparator() + " * @param owner" + System.lineSeparator() + " * \t\tthe package of the annotation type" + System.lineSeparator() + " * @param simpleName" + System.lineSeparator() + " * \t\tthe name of annotation" + System.lineSeparator() + " */" + System.lineSeparator() + " public <T> CtAnnotationType<?> create(CtPackage owner, String simpleName) {" + System.lineSeparator() + " return null;" + System.lineSeparator() + " }" + System.lineSeparator() + "}", aClass.toString()); } @Test public void testJavadocNotPresentInAST() throws Exception { Launcher launcher = new Launcher(); launcher.getEnvironment().setCommentEnabled(false); launcher.getEnvironment().setNoClasspath(true); launcher.setArgs(new String[] {"--output-type", "nooutput" }); launcher.addInputResource("./src/test/java/spoon/test/javadoc/testclasses/"); launcher.run(); new CtScanner() { @Override public void scan(CtElement element) { if (element != null) { assertEquals(0, element.getComments().size()); } super.scan(element); } @Override public void visitCtComment(CtComment comment) { fail("Shouldn't have comment in the model."); super.visitCtComment(comment); } }.scan(launcher.getModel().getRootPackage()); } }