1 /***
2 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
3 */
4 package test.net.sourceforge.pmd.rules.design;
5
6 import net.sourceforge.pmd.PMD;
7 import net.sourceforge.pmd.Report;
8 import net.sourceforge.pmd.Rule;
9 import test.net.sourceforge.pmd.testframework.SimpleAggregatorTst;
10 import test.net.sourceforge.pmd.testframework.TestDescriptor;
11
12 public class TooManyFieldsTest extends SimpleAggregatorTst {
13
14 private Rule rule;
15
16 public void setUp() {
17 rule = findRule("codesize", "TooManyFields");
18 }
19
20 public void testAll() {
21 runTests(new TestDescriptor[]{
22 new TestDescriptor(TEST1, "3 fields, max is 15", 0, rule),
23 new TestDescriptor(TEST2, "16 fields, bad", 1, rule),
24 new TestDescriptor(TEST3, "12 fields, but 6 in inner and 6 in outer", 0, rule),
25 new TestDescriptor(TEST4, "outer class, inner interface, both OK", 0, rule),
26 new TestDescriptor(TEST5, "interface with 10 fields", 0, rule),
27 new TestDescriptor(TEST6, "2 inner classes, each with > 10 fields", 2, rule),
28 new TestDescriptor(TEST7, "anonymous class with a field", 0, rule),
29 new TestDescriptor(TEST9, "lots of static finals, those are ok", 0, rule),
30 });
31 }
32
33 public void testPropertySetting() throws Throwable {
34 Report rpt = new Report();
35 rule.addProperty("maxfields", "2");
36 runTestFromString(TEST8, rule, rpt);
37 assertEquals(1, rpt.size());
38 }
39
40 private static final String TEST1 =
41 "public class Foo {" + PMD.EOL +
42 " int a1; " + PMD.EOL +
43 " int a2; " + PMD.EOL +
44 " int a3; " + PMD.EOL +
45 "}";
46
47 private static final String TEST2 =
48 "public class Foo {" + PMD.EOL +
49 " int a1; " + PMD.EOL +
50 " int a2; " + PMD.EOL +
51 " int a3; " + PMD.EOL +
52 " int a4; " + PMD.EOL +
53 " int a5; " + PMD.EOL +
54 " int a6; " + PMD.EOL +
55 " int a7; " + PMD.EOL +
56 " int a8; " + PMD.EOL +
57 " int a9; " + PMD.EOL +
58 " int a10; " + PMD.EOL +
59 " int a11; " + PMD.EOL +
60 " int a12; " + PMD.EOL +
61 " int a13; " + PMD.EOL +
62 " int a14; " + PMD.EOL +
63 " int a15; " + PMD.EOL +
64 " int a16; " + PMD.EOL +
65 "}";
66
67 private static final String TEST3 =
68 "public class Foo {" + PMD.EOL +
69 " int a1; " + PMD.EOL +
70 " int a2; " + PMD.EOL +
71 " int a3; " + PMD.EOL +
72 " int a4; " + PMD.EOL +
73 " int a5; " + PMD.EOL +
74 " int a6; " + PMD.EOL +
75 " public class Bar {" + PMD.EOL +
76 " int a7; " + PMD.EOL +
77 " int a8; " + PMD.EOL +
78 " int a9; " + PMD.EOL +
79 " int a10; " + PMD.EOL +
80 " int a11; " + PMD.EOL +
81 " int a12; " + PMD.EOL +
82 " }" +
83 "}";
84
85 private static final String TEST4 =
86 "public class Foo {" + PMD.EOL +
87 " int a1; " + PMD.EOL +
88 " int a2; " + PMD.EOL +
89 " int a3; " + PMD.EOL +
90 " int a4; " + PMD.EOL +
91 " int a5; " + PMD.EOL +
92 " interface Bar {" + PMD.EOL +
93 " int a6; " + PMD.EOL +
94 " int a7; " + PMD.EOL +
95 " int a8; " + PMD.EOL +
96 " int a9; " + PMD.EOL +
97 " int a10; " + PMD.EOL +
98 " }" +
99 "}";
100
101 private static final String TEST5 =
102 "public interface Foo {" + PMD.EOL +
103 " int a1; " + PMD.EOL +
104 " int a2; " + PMD.EOL +
105 " int a3; " + PMD.EOL +
106 " int a4; " + PMD.EOL +
107 " int a5; " + PMD.EOL +
108 " int a6; " + PMD.EOL +
109 " int a7; " + PMD.EOL +
110 " int a8; " + PMD.EOL +
111 " int a9; " + PMD.EOL +
112 " int a10; " + PMD.EOL +
113 "}";
114
115 private static final String TEST6 =
116 "public class Foo {" + PMD.EOL +
117 " public class Bar1 {" + PMD.EOL +
118 " int b1; " + PMD.EOL +
119 " int b2; " + PMD.EOL +
120 " int b3; " + PMD.EOL +
121 " int b4; " + PMD.EOL +
122 " int b5; " + PMD.EOL +
123 " int b6; " + PMD.EOL +
124 " int b7; " + PMD.EOL +
125 " int b8; " + PMD.EOL +
126 " int b9; " + PMD.EOL +
127 " int b10; " + PMD.EOL +
128 " int b11; " + PMD.EOL +
129 " int b12; " + PMD.EOL +
130 " int b13; " + PMD.EOL +
131 " int b14; " + PMD.EOL +
132 " int b15; " + PMD.EOL +
133 " int b16; " + PMD.EOL +
134 " }" + PMD.EOL +
135 " public class Bar2 {" + PMD.EOL +
136 " int b1; " + PMD.EOL +
137 " int b2; " + PMD.EOL +
138 " int b3; " + PMD.EOL +
139 " int b4; " + PMD.EOL +
140 " int b5; " + PMD.EOL +
141 " int b6; " + PMD.EOL +
142 " int b7; " + PMD.EOL +
143 " int b8; " + PMD.EOL +
144 " int b9; " + PMD.EOL +
145 " int b10; " + PMD.EOL +
146 " int b11; " + PMD.EOL +
147 " int b12; " + PMD.EOL +
148 " int b13; " + PMD.EOL +
149 " int b14; " + PMD.EOL +
150 " int b15; " + PMD.EOL +
151 " int b16; " + PMD.EOL +
152 " }" + PMD.EOL +
153 "}";
154
155 private static final String TEST7 =
156 "public class Foo {" + PMD.EOL +
157 " public class Bar1 {" + PMD.EOL +
158 " Object foo = new Object() {public int x;}; " + PMD.EOL +
159 " }" + PMD.EOL +
160 "}";
161
162 private static final String TEST8 =
163 "public class Foo {" + PMD.EOL +
164 " int a1; " + PMD.EOL +
165 " int a2; " + PMD.EOL +
166 " int a3; " + PMD.EOL +
167 "}";
168
169 private static final String TEST9 =
170 "public class Foo {" + PMD.EOL +
171 " public static final int a1 = 2 ; " + PMD.EOL +
172 " public static final int a2 = 2 ; " + PMD.EOL +
173 " public static final int a3 = 2 ; " + PMD.EOL +
174 " public static final int a4 = 2 ; " + PMD.EOL +
175 " public static final int a5 = 2 ; " + PMD.EOL +
176 " public static final int a6 = 2 ; " + PMD.EOL +
177 " public static final int a7 = 2 ; " + PMD.EOL +
178 " public static final int a8 = 2 ; " + PMD.EOL +
179 " public static final int a9 = 2 ; " + PMD.EOL +
180 " public static final int a10 = 2 ; " + PMD.EOL +
181 " public static final int a11 = 2 ; " + PMD.EOL +
182 " public static final int a12 = 2 ; " + PMD.EOL +
183 " public static final int a13 = 2 ; " + PMD.EOL +
184 " public static final int a14 = 2 ; " + PMD.EOL +
185 " public static final int a15 = 2 ; " + PMD.EOL +
186 " public static final int a16 = 2 ; " + PMD.EOL +
187 " public static final int a17 = 2 ; " + PMD.EOL +
188 "}";
189
190
191 }