1 package test.net.sourceforge.pmd.rules;
2
3 import net.sourceforge.pmd.PMD;
4 import net.sourceforge.pmd.Rule;
5 import net.sourceforge.pmd.rules.XPathRule;
6
7 public class UnnecessaryConstructorRuleTest extends SimpleAggregatorTst {
8
9 private Rule rule;
10
11 public void setUp() {
12 rule = new XPathRule();
13 rule.addProperty("xpath", "//UnmodifiedClassDeclaration/ClassBody[count(ClassBodyDeclaration/ConstructorDeclaration)=1]/ClassBodyDeclaration/ConstructorDeclaration[@Public='true'][not(FormalParameters/*)][not(BlockStatement)][not(NameList)][count(ExplicitConstructorInvocation/Arguments/ArgumentList/Expression)=0]");
14 }
15
16 public void testAll() {
17 runTests(new TestDescriptor[] {
18 new TestDescriptor(TEST1, "simple failure case", 1, rule),
19 new TestDescriptor(TEST2, "private constructor", 0, rule),
20 new TestDescriptor(TEST3, "constructor with arguments", 0, rule),
21 new TestDescriptor(TEST4, "constructor with contents", 0, rule),
22 new TestDescriptor(TEST5, "constructor throws exception", 0, rule),
23 new TestDescriptor(TEST6, "two constructors", 0, rule),
24 new TestDescriptor(TEST7, "inner class with unnecessary constructor", 1, rule),
25 new TestDescriptor(TEST8, "inner and outer both have unnecessary constructors", 2, rule),
26 new TestDescriptor(TEST9, "inner and outer, both ok", 0, rule),
27 new TestDescriptor(TEST10, "inner ok, outer bad", 1, rule),
28 new TestDescriptor(TEST11, "inner ok due to nonpublic constructor", 0, rule),
29 new TestDescriptor(TEST12, "constructor calls super", 0, rule),
30 new TestDescriptor(TEST13, "constructor calls super, no args", 1, rule),
31 });
32 }
33
34 private static final String TEST1 =
35 "public class UnnecessaryConstructor1 {" + PMD.EOL +
36 " public UnnecessaryConstructor1() {}" + PMD.EOL +
37 "}";
38
39 private static final String TEST2 =
40 "public class UnnecessaryConstructor2 {" + PMD.EOL +
41 " private UnnecessaryConstructor2() {}" + PMD.EOL +
42 "}";
43
44 private static final String TEST3 =
45 "public class UnnecessaryConstructor3 {" + PMD.EOL +
46 " public UnnecessaryConstructor3(int x) {}" + PMD.EOL +
47 "}";
48
49 private static final String TEST4 =
50 "public class UnnecessaryConstructor4 {" + PMD.EOL +
51 " public UnnecessaryConstructor4() { " + PMD.EOL +
52 " int x = 2;" + PMD.EOL +
53 " }" + PMD.EOL +
54 "}";
55
56 private static final String TEST5 =
57 "public class UnnecessaryConstructor5 {" + PMD.EOL +
58 " public UnnecessaryConstructor5() throws IOException { " + PMD.EOL +
59 " }" + PMD.EOL +
60 "}";
61
62 private static final String TEST6 =
63 "public class UnnecessaryConstructor6 {" + PMD.EOL +
64 " public UnnecessaryConstructor6() {" + PMD.EOL +
65 " }" + PMD.EOL +
66 " public UnnecessaryConstructor6(String foo) {}" + PMD.EOL +
67 "}";
68
69 private static final String TEST7 =
70 "public class Foo {" + PMD.EOL +
71 " public class Inner {" + PMD.EOL +
72 " public Inner() {}" + PMD.EOL +
73 " }" + PMD.EOL +
74 "}";
75
76 private static final String TEST8 =
77 "public class Foo {" + PMD.EOL +
78 " public class Inner {" + PMD.EOL +
79 " public Inner() {}" + PMD.EOL +
80 " }" + PMD.EOL +
81 " public Foo() {}" + PMD.EOL +
82 "}";
83
84 private static final String TEST9 =
85 "public class Foo {" + PMD.EOL +
86 " public class Inner {" + PMD.EOL +
87 " }" + PMD.EOL +
88 "}";
89
90 private static final String TEST10 =
91 "public class Foo {" + PMD.EOL +
92 " public class Inner {" + PMD.EOL +
93 " }" + PMD.EOL +
94 " public Foo() {}" + PMD.EOL +
95 "}";
96
97 private static final String TEST11 =
98 "public class Foo {" + PMD.EOL +
99 " public class Inner {" + PMD.EOL +
100 " private Inner() {}" + PMD.EOL +
101 " }" + PMD.EOL +
102 "}";
103
104 private static final String TEST12 =
105 "public class Foo {" + PMD.EOL +
106 " public Foo() {super(7);}" + PMD.EOL +
107 "}";
108
109 private static final String TEST13 =
110 "public class Foo {" + PMD.EOL +
111 " public Foo() {super();}" + PMD.EOL +
112 "}";
113
114
115
116 }
This page was automatically generated by Maven