1
2
3
4 package net.sourceforge.pmd.renderers;
5
6 import static org.junit.Assert.assertEquals;
7 import net.sourceforge.pmd.PMD;
8 import net.sourceforge.pmd.Report;
9 import net.sourceforge.pmd.ReportTest;
10 import net.sourceforge.pmd.Report.ProcessingError;
11 import net.sourceforge.pmd.lang.java.ast.ASTClassOrInterfaceDeclaration;
12 import net.sourceforge.pmd.lang.java.rule.AbstractJavaRule;
13 import net.sourceforge.pmd.renderers.Renderer;
14 import net.sourceforge.pmd.testframework.RuleTst;
15
16 import org.junit.Test;
17
18
19 public abstract class AbstractRendererTst extends RuleTst {
20
21 private static class FooRule extends AbstractJavaRule {
22 public Object visit(ASTClassOrInterfaceDeclaration c, Object ctx) {
23 if (c.getImage().equals("Foo"))
24 addViolation(ctx, c);
25 return ctx;
26 }
27 public String getMessage() { return "msg"; }
28 public String getName() { return "Foo"; }
29 public String getRuleSetName() { return "RuleSet"; }
30 public String getDescription() { return "desc"; }
31 }
32
33 private static class FooRule2 extends FooRule {
34 public Object visit(ASTClassOrInterfaceDeclaration c, Object ctx) {
35 if (c.getImage().equals("Foo")) {
36 addViolation(ctx, c);
37 addViolation(ctx, c.jjtGetChild(0));
38 }
39 return ctx;
40 }
41 }
42
43 public abstract Renderer getRenderer();
44
45 public abstract String getExpected();
46
47 public abstract String getExpectedEmpty();
48
49 public abstract String getExpectedMultiple();
50
51 public String getExpectedError(ProcessingError error) {
52 return "";
53 }
54
55 @Test(expected = NullPointerException.class)
56 public void testNullPassedIn() throws Throwable {
57 ReportTest.render(getRenderer(), null);
58 }
59
60 @Test
61 public void testRenderer() throws Throwable {
62 Report rep = new Report();
63 runTestFromString(TEST1, new FooRule(), rep);
64 String actual = ReportTest.render(getRenderer(), rep);
65 assertEquals(getExpected(), actual);
66 }
67
68 @Test
69 public void testRendererEmpty() throws Throwable {
70 Report rep = new Report();
71 String actual = ReportTest.render(getRenderer(), rep);
72 assertEquals(getExpectedEmpty(), actual);
73 }
74
75 @Test
76 public void testRendererMultiple() throws Throwable {
77 Report rep = new Report();
78 runTestFromString(TEST1, new FooRule2(), rep);
79 String actual = ReportTest.render(getRenderer(), rep);
80 assertEquals(getExpectedMultiple(), actual);
81 }
82
83 @Test
84 public void testError() throws Throwable {
85 Report rep = new Report();
86 Report.ProcessingError err = new Report.ProcessingError("Error", "file");
87 rep.addError(err);
88 String actual = ReportTest.render(getRenderer(), rep);
89 assertEquals(getExpectedError(err), actual);
90 }
91
92 private static final String TEST1 = "public class Foo {}" + PMD.EOL;
93 }