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 }