1 package test.net.sourceforge.pmd;
2
3 import junit.framework.TestCase;
4 import net.sourceforge.pmd.Report;
5 import net.sourceforge.pmd.ReportListener;
6 import net.sourceforge.pmd.RuleContext;
7 import net.sourceforge.pmd.RuleViolation;
8 import net.sourceforge.pmd.renderers.Renderer;
9 import net.sourceforge.pmd.renderers.XMLRenderer;
10 import net.sourceforge.pmd.stat.Metric;
11
12 import java.util.Iterator;
13
14 public class ReportTest extends TestCase implements ReportListener {
15
16 private boolean violationSemaphore;
17 private boolean metricSemaphore;
18
19 public void testBasic() {
20 Report r = new Report();
21 RuleContext ctx = new RuleContext();
22 ctx.setSourceCodeFilename("foo");
23 r.addRuleViolation(new RuleViolation(new MockRule("name", "desc", "msg"), 5, ctx));
24 assertTrue(!r.isEmpty());
25 }
26
27 public void testMetric0() {
28 Report r = new Report();
29 assertTrue("Default report shouldn't contain metrics", !r.hasMetrics());
30 }
31
32 public void testMetric1() {
33 Report r = new Report();
34 assertTrue("Default report shouldn't contain metrics", !r.hasMetrics());
35
36 r.addMetric(new Metric("m1", 0, 0.0, 1.0, 2.0, 3.0, 4.0));
37 assertTrue("Expected metrics weren't there", r.hasMetrics());
38
39 Iterator ms = r.metrics();
40 assertTrue("Should have some metrics in there now", ms.hasNext());
41
42 Object o = ms.next();
43 assertTrue("Expected Metric, got " + o.getClass(), o instanceof Metric);
44
45 Metric m = (Metric) o;
46 assertEquals("metric name mismatch", "m1", m.getMetricName());
47 assertEquals("wrong low value", 1.0, m.getLowValue(), 0.05);
48 assertEquals("wrong high value", 2.0, m.getHighValue(), 0.05);
49 assertEquals("wrong avg value", 3.0, m.getAverage(), 0.05);
50 assertEquals("wrong std dev value", 4.0, m.getStandardDeviation(), 0.05);
51 }
52
53
54 // Files are grouped together now.
55 public void testSortedReport_File() {
56 Report r = new Report();
57 RuleContext ctx = new RuleContext();
58 ctx.setSourceCodeFilename("foo");
59 r.addRuleViolation(new RuleViolation(new MockRule("name", "desc", "msg"), 10, ctx));
60 ctx.setSourceCodeFilename("bar");
61 r.addRuleViolation(new RuleViolation(new MockRule("name", "desc", "msg"), 20, ctx));
62 Renderer rend = new XMLRenderer();
63 String result = rend.render(r);
64 assertTrue("sort order wrong", result.indexOf("bar") < result.indexOf("foo"));
65 }
66
67 public void testSortedReport_Line() {
68 Report r = new Report();
69 RuleContext ctx = new RuleContext();
70 ctx.setSourceCodeFilename("foo1");
71 r.addRuleViolation(new RuleViolation(new MockRule("rule2", "rule2", "msg"), 10, ctx));
72 ctx.setSourceCodeFilename("foo2");
73 r.addRuleViolation(new RuleViolation(new MockRule("rule1", "rule1", "msg"), 20, ctx));
74 Renderer rend = new XMLRenderer();
75 String result = rend.render(r);
76 assertTrue("sort order wrong", result.indexOf("rule2") < result.indexOf("rule1"));
77 }
78
79 public void testListener() {
80 Report rpt = new Report();
81 rpt.addListener(this);
82 violationSemaphore = false;
83 RuleContext ctx = new RuleContext();
84 ctx.setSourceCodeFilename("file");
85 rpt.addRuleViolation(new RuleViolation(new MockRule("name", "desc", "msg"), 5, ctx));
86 assertTrue(violationSemaphore);
87
88 metricSemaphore = false;
89 rpt.addMetric(new Metric("test", 0, 0.0, 0.0, 0.0, 0.0, 0.0));
90
91 assertTrue("no metric", metricSemaphore);
92 }
93
94 public void ruleViolationAdded(RuleViolation ruleViolation) {
95 violationSemaphore = true;
96 }
97
98 public void metricAdded(Metric metric) {
99 metricSemaphore = true;
100 }
101
102 }
This page was automatically generated by Maven