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 public void testAll() {
20 runTests(new TestDescriptor[] {
21 new TestDescriptor(TEST1, "3 fields, max is 15", 0, rule),
22 new TestDescriptor(TEST2, "16 fields, bad", 1, rule),
23 new TestDescriptor(TEST3, "12 fields, but 6 in inner and 6 in outer", 0, rule),
24 new TestDescriptor(TEST4, "outer class, inner interface, both OK", 0, rule),
25 new TestDescriptor(TEST5, "interface with 10 fields", 0, rule),
26 new TestDescriptor(TEST6, "2 inner classes, each with > 10 fields", 2, rule),
27 new TestDescriptor(TEST7, "anonymous class with a field", 0, rule),
28 });
29 }
30
31 public void testPropertySetting() throws Throwable {
32 Report rpt = new Report();
33 rule.addProperty("maxfields", "2");
34 runTestFromString(TEST8, rule, rpt);
35 assertEquals(1, rpt.size());
36 }
37
38
39 private static final String TEST1 =
40 "public class Foo {" + PMD.EOL +
41 " int a1; " + PMD.EOL +
42 " int a2; " + PMD.EOL +
43 " int a3; " + PMD.EOL +
44 "}";
45
46 private static final String TEST2 =
47 "public class Foo {" + PMD.EOL +
48 " int a1; " + PMD.EOL +
49 " int a2; " + PMD.EOL +
50 " int a3; " + PMD.EOL +
51 " int a4; " + PMD.EOL +
52 " int a5; " + PMD.EOL +
53 " int a6; " + PMD.EOL +
54 " int a7; " + PMD.EOL +
55 " int a8; " + PMD.EOL +
56 " int a9; " + PMD.EOL +
57 " int a10; " + PMD.EOL +
58 " int a11; " + PMD.EOL +
59 " int a12; " + PMD.EOL +
60 " int a13; " + PMD.EOL +
61 " int a14; " + PMD.EOL +
62 " int a15; " + PMD.EOL +
63 " int a16; " + PMD.EOL +
64 "}";
65
66 private static final String TEST3 =
67 "public class Foo {" + PMD.EOL +
68 " int a1; " + PMD.EOL +
69 " int a2; " + PMD.EOL +
70 " int a3; " + PMD.EOL +
71 " int a4; " + PMD.EOL +
72 " int a5; " + PMD.EOL +
73 " int a6; " + PMD.EOL +
74 " public class Bar {" + PMD.EOL +
75 " int a7; " + PMD.EOL +
76 " int a8; " + PMD.EOL +
77 " int a9; " + PMD.EOL +
78 " int a10; " + PMD.EOL +
79 " int a11; " + PMD.EOL +
80 " int a12; " + PMD.EOL +
81 " }" +
82 "}";
83
84 private static final String TEST4 =
85 "public class Foo {" + PMD.EOL +
86 " int a1; " + PMD.EOL +
87 " int a2; " + PMD.EOL +
88 " int a3; " + PMD.EOL +
89 " int a4; " + PMD.EOL +
90 " int a5; " + PMD.EOL +
91 " interface Bar {" + PMD.EOL +
92 " int a6; " + PMD.EOL +
93 " int a7; " + PMD.EOL +
94 " int a8; " + PMD.EOL +
95 " int a9; " + PMD.EOL +
96 " int a10; " + PMD.EOL +
97 " }" +
98 "}";
99
100 private static final String TEST5 =
101 "public interface Foo {" + PMD.EOL +
102 " int a1; " + PMD.EOL +
103 " int a2; " + PMD.EOL +
104 " int a3; " + PMD.EOL +
105 " int a4; " + PMD.EOL +
106 " int a5; " + PMD.EOL +
107 " int a6; " + PMD.EOL +
108 " int a7; " + PMD.EOL +
109 " int a8; " + PMD.EOL +
110 " int a9; " + PMD.EOL +
111 " int a10; " + PMD.EOL +
112 "}";
113
114 private static final String TEST6 =
115 "public class Foo {" + PMD.EOL +
116 " public class Bar1 {" + PMD.EOL +
117 " int b1; " + PMD.EOL +
118 " int b2; " + PMD.EOL +
119 " int b3; " + PMD.EOL +
120 " int b4; " + PMD.EOL +
121 " int b5; " + PMD.EOL +
122 " int b6; " + PMD.EOL +
123 " int b7; " + PMD.EOL +
124 " int b8; " + PMD.EOL +
125 " int b9; " + PMD.EOL +
126 " int b10; " + PMD.EOL +
127 " int b11; " + PMD.EOL +
128 " int b12; " + PMD.EOL +
129 " int b13; " + PMD.EOL +
130 " int b14; " + PMD.EOL +
131 " int b15; " + PMD.EOL +
132 " int b16; " + PMD.EOL +
133 " }" + PMD.EOL +
134 " public class Bar2 {" + PMD.EOL +
135 " int b1; " + PMD.EOL +
136 " int b2; " + PMD.EOL +
137 " int b3; " + PMD.EOL +
138 " int b4; " + PMD.EOL +
139 " int b5; " + PMD.EOL +
140 " int b6; " + PMD.EOL +
141 " int b7; " + PMD.EOL +
142 " int b8; " + PMD.EOL +
143 " int b9; " + PMD.EOL +
144 " int b10; " + PMD.EOL +
145 " int b11; " + PMD.EOL +
146 " int b12; " + PMD.EOL +
147 " int b13; " + PMD.EOL +
148 " int b14; " + PMD.EOL +
149 " int b15; " + PMD.EOL +
150 " int b16; " + PMD.EOL +
151 " }" + PMD.EOL +
152 "}";
153
154 private static final String TEST7 =
155 "public class Foo {" + PMD.EOL +
156 " public class Bar1 {" + PMD.EOL +
157 " Object foo = new Object() {public int x;}; " + PMD.EOL +
158 " }" + PMD.EOL +
159 "}";
160
161 private static final String TEST8 =
162 "public class Foo {" + PMD.EOL +
163 " int a1; " + PMD.EOL +
164 " int a2; " + PMD.EOL +
165 " int a3; " + PMD.EOL +
166 "}";
167
168
169 }