/**
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd.lang.java.rule.comments;
import static org.junit.Assert.assertEquals;
import java.io.Reader;
import java.io.StringReader;
import java.util.List;
import org.junit.Assert;
import org.junit.Test;
import net.sourceforge.pmd.lang.LanguageRegistry;
import net.sourceforge.pmd.lang.LanguageVersionHandler;
import net.sourceforge.pmd.lang.ast.Node;
import net.sourceforge.pmd.lang.java.JavaLanguageModule;
import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit;
import net.sourceforge.pmd.lang.java.ast.ASTMethodDeclaration;
import net.sourceforge.pmd.lang.java.ast.FormalComment;
import net.sourceforge.pmd.lang.java.ast.MultiLineComment;
import net.sourceforge.pmd.lang.java.ast.Token;
public class AbstractCommentRuleTest {
private AbstractCommentRule testSubject = new AbstractCommentRule() {
};
/**
* Blank lines in comments should not raise an exception. See bug #1048.
*/
@Test
public void testFilteredCommentIn() {
Token token = new Token();
token.image = "/* multi line comment with blank lines\n\n\n */";
String filtered = testSubject.filteredCommentIn(new MultiLineComment(token));
assertEquals("multi line comment with blank lines", filtered);
token.image = "/** a formal comment with blank lines\n\n\n */";
filtered = testSubject.filteredCommentIn(new FormalComment(token));
assertEquals("a formal comment with blank lines", filtered);
}
@Test
public void testCommentAssignments() {
LanguageVersionHandler handler = LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion("1.8")
.getLanguageVersionHandler();
Reader source = new StringReader("public class Foo {" + " /** Comment 1 */\n"
+ " public void method1() {}\n" + " \n" + " /** Comment 2 */\n" + " \n"
+ " /** Comment 3 */\n" + " public void method2() {}" + "}");
Node node = handler.getParser(handler.getDefaultParserOptions()).parse("test", source);
testSubject.assignCommentsToDeclarations((ASTCompilationUnit) node);
List<ASTMethodDeclaration> methods = node.findDescendantsOfType(ASTMethodDeclaration.class);
Assert.assertEquals("/** Comment 1 */", methods.get(0).comment().getImage());
Assert.assertEquals("/** Comment 3 */", methods.get(1).comment().getImage());
}
}