1 package test.net.sourceforge.pmd;
2
3 import net.sourceforge.pmd.AbstractRule;
4 import net.sourceforge.pmd.PMD;
5 import net.sourceforge.pmd.Report;
6 import net.sourceforge.pmd.ast.ASTClassOrInterfaceDeclaration;
7 import net.sourceforge.pmd.ast.ASTVariableDeclaratorId;
8 import test.net.sourceforge.pmd.testframework.RuleTst;
9
10 public class SuppressWarningsTest extends RuleTst {
11
12 private static class FooRule extends AbstractRule {
13 public Object visit(ASTClassOrInterfaceDeclaration c, Object ctx) {
14 if (c.getImage().equalsIgnoreCase("Foo")) addViolation(ctx, c);
15 return super.visit(c, ctx);
16 }
17
18 public Object visit(ASTVariableDeclaratorId c, Object ctx) {
19 if (c.getImage().equalsIgnoreCase("Foo")) addViolation(ctx, c);
20 return super.visit(c, ctx);
21 }
22 }
23
24 public void testClassLevelSuppression() throws Throwable {
25 Report rpt = new Report();
26 runTestFromString15(TEST1, new FooRule(), rpt);
27 assertEquals(0, rpt.size());
28 runTestFromString15(TEST2, new FooRule(), rpt);
29 assertEquals(0, rpt.size());
30 }
31
32 public void testInheritedSuppression() throws Throwable {
33 Report rpt = new Report();
34 runTestFromString15(TEST3, new FooRule(), rpt);
35 assertEquals(0, rpt.size());
36 }
37
38 public void testMethodLevelSuppression() throws Throwable {
39 Report rpt = new Report();
40 runTestFromString15(TEST4, new FooRule(), rpt);
41 assertEquals(1, rpt.size());
42 }
43
44 public void testConstructorLevelSuppression() throws Throwable {
45 Report rpt = new Report();
46 runTestFromString15(TEST5, new FooRule(), rpt);
47 assertEquals(0, rpt.size());
48 }
49
50 public void testFieldLevelSuppression() throws Throwable {
51 Report rpt = new Report();
52 runTestFromString15(TEST6, new FooRule(), rpt);
53 assertEquals(1, rpt.size());
54 }
55
56 public void testParameterLevelSuppression() throws Throwable {
57 Report rpt = new Report();
58 runTestFromString15(TEST7, new FooRule(), rpt);
59 assertEquals(1, rpt.size());
60 }
61
62 public void testLocalVariableLevelSuppression() throws Throwable {
63 Report rpt = new Report();
64 runTestFromString15(TEST8, new FooRule(), rpt);
65 assertEquals(1, rpt.size());
66 }
67
68 private static final String TEST1 =
69 "@SuppressWarnings(\"\")" + PMD.EOL +
70 "public class Foo {}";
71
72 private static final String TEST2 =
73 "@SuppressWarnings(\"\")" + PMD.EOL +
74 "public class Foo {" + PMD.EOL +
75 " void bar() {" + PMD.EOL +
76 " int foo;" + PMD.EOL +
77 " }" + PMD.EOL +
78 "}";
79
80 private static final String TEST3 =
81 "public class Baz {" + PMD.EOL +
82 " @SuppressWarnings(\"\")" + PMD.EOL +
83 " public class Bar {" + PMD.EOL +
84 " void bar() {" + PMD.EOL +
85 " int foo;" + PMD.EOL +
86 " }" + PMD.EOL +
87 " }" + PMD.EOL +
88 "}";
89
90 private static final String TEST4 =
91 "public class Foo {" + PMD.EOL +
92 " @SuppressWarnings(\"\")" + PMD.EOL +
93 " void bar() {" + PMD.EOL +
94 " int foo;" + PMD.EOL +
95 " }" + PMD.EOL +
96 "}";
97
98 private static final String TEST5 =
99 "public class Bar {" + PMD.EOL +
100 " @SuppressWarnings(\"\")" + PMD.EOL +
101 " public Bar() {" + PMD.EOL +
102 " int foo;" + PMD.EOL +
103 " }" + PMD.EOL +
104 "}";
105
106 private static final String TEST6 =
107 "public class Bar {" + PMD.EOL +
108 " @SuppressWarnings(\"\")" + PMD.EOL +
109 " int foo;" + PMD.EOL +
110 " void bar() {" + PMD.EOL +
111 " int foo;" + PMD.EOL +
112 " }" + PMD.EOL +
113 "}";
114
115 private static final String TEST7 =
116 "public class Bar {" + PMD.EOL +
117 " int foo;" + PMD.EOL +
118 " void bar(@SuppressWarnings(\"\") int foo) {}" + PMD.EOL +
119 "}";
120
121 private static final String TEST8 =
122 "public class Bar {" + PMD.EOL +
123 " int foo;" + PMD.EOL +
124 " void bar() {" + PMD.EOL +
125 " @SuppressWarnings(\"\") int foo;" + PMD.EOL +
126 " }" + PMD.EOL +
127 "}";
128
129 }