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 }