1 package test.net.sourceforge.pmd;
2
3 import net.sourceforge.pmd.ExcludeLines;
4 import net.sourceforge.pmd.PMD;
5 import net.sourceforge.pmd.Rule;
6 import test.net.sourceforge.pmd.testframework.RuleTst;
7
8 import java.io.BufferedReader;
9 import java.io.StringReader;
10
11 public class ExcludeLinesTest extends RuleTst {
12
13 public void testExcludeOne() throws Throwable {
14 ExcludeLines e = new ExcludeLines(new StringReader(TEST1));
15 assertFalse(e.getLinesToExclude().isEmpty());
16 Integer i = (Integer) e.getLinesToExclude().iterator().next();
17 assertEquals(3, i.intValue());
18 }
19
20 public void testExcludeMultiple() throws Throwable {
21 ExcludeLines e = new ExcludeLines(new StringReader(TEST2));
22 assertEquals(3, e.getLinesToExclude().size());
23 assertTrue(e.getLinesToExclude().contains(new Integer(3)));
24 assertTrue(e.getLinesToExclude().contains(new Integer(4)));
25 assertTrue(e.getLinesToExclude().contains(new Integer(5)));
26 }
27
28 public void testCopyMatches() throws Throwable {
29 ExcludeLines e = new ExcludeLines(new StringReader(TEST1));
30 BufferedReader br = new BufferedReader(e.getCopyReader());
31 StringBuffer copyBuffer = new StringBuffer();
32 String tmp;
33 while ((tmp = br.readLine()) != null) {
34 copyBuffer.append(tmp + PMD.EOL);
35 }
36 copyBuffer.deleteCharAt(copyBuffer.length() - 1);
37 if (PMD.EOL.length() == 2) {
38 copyBuffer.deleteCharAt(copyBuffer.length() - 1);
39 }
40 assertEquals(TEST1, copyBuffer.toString());
41 }
42
43 public void testAlternateMarker() throws Throwable {
44 ExcludeLines e = new ExcludeLines(new StringReader(TEST4), "FOOBAR");
45 assertFalse(e.getLinesToExclude().isEmpty());
46 }
47
48 public void testAcceptance() throws Throwable {
49 try {
50 Rule rule = findRule("rulesets/unusedcode.xml", "UnusedLocalVariable");
51 runTestFromString(TEST1, 0, rule);
52 runTestFromString(TEST3, 1, rule);
53 } catch (Exception e) {
54 fail("Acceptance tests failed");
55 }
56 }
57
58
59 private static final String TEST1 =
60 "public class Foo {" + PMD.EOL +
61 " void foo() {" + PMD.EOL +
62 " int x; //NOPMD " + PMD.EOL +
63 " } " + PMD.EOL +
64 "}";
65
66 private static final String TEST2 =
67 "public class Foo {" + PMD.EOL +
68 " void foo() {" + PMD.EOL +
69 " int x; //NOPMD " + PMD.EOL +
70 " int y; //NOPMD " + PMD.EOL +
71 " int z; //NOPMD " + PMD.EOL +
72 " } " + PMD.EOL +
73 "}";
74
75 private static final String TEST3 =
76 "public class Foo {" + PMD.EOL +
77 " void foo() {" + PMD.EOL +
78 " int x;" + PMD.EOL +
79 " } " + PMD.EOL +
80 "}";
81
82 private static final String TEST4 =
83 "public class Foo {" + PMD.EOL +
84 " void foo() {" + PMD.EOL +
85 " int x; // FOOBAR" + PMD.EOL +
86 " } " + PMD.EOL +
87 "}";
88
89 }