1 /*** 2 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html 3 */ 4 package test.net.sourceforge.pmd.rules; 5 6 import net.sourceforge.pmd.PMD; 7 import net.sourceforge.pmd.Rule; 8 import test.net.sourceforge.pmd.testframework.SimpleAggregatorTst; 9 import test.net.sourceforge.pmd.testframework.TestDescriptor; 10 11 public class AvoidDeeplyNestedIfStmtsRuleTest extends SimpleAggregatorTst { 12 13 private Rule rule; 14 15 public void setUp() { 16 rule = findRule("design", "AvoidDeeplyNestedIfStmts"); 17 rule.addProperty("problemDepth", "3"); 18 } 19 20 public void testAll() { 21 runTests(new TestDescriptor[]{ 22 new TestDescriptor(TEST1, "Bad, very deep", 1, rule), 23 new TestDescriptor(TEST2, "OK, not so deep", 0, rule), 24 }); 25 } 26 27 public static final String TEST1 = 28 "public class Foo {" + PMD.EOL + 29 " public void bar() { " + PMD.EOL + 30 " int x=2; " + PMD.EOL + 31 " int y=3; " + PMD.EOL + 32 " int z=4; " + PMD.EOL + 33 " if (x>y) { " + PMD.EOL + 34 " if (y>z) { " + PMD.EOL + 35 " if (z==x) { " + PMD.EOL + 36 " // this is officially out of control now " + PMD.EOL + 37 " } " + PMD.EOL + 38 " } " + PMD.EOL + 39 " }" + PMD.EOL + 40 " }" + PMD.EOL + 41 "}"; 42 43 public static final String TEST2 = 44 "public class Foo {" + PMD.EOL + 45 " public void bar() { " + PMD.EOL + 46 " if (true) {" + PMD.EOL + 47 " } else if (true) {" + PMD.EOL + 48 " } else if (true) {" + PMD.EOL + 49 " } else {" + PMD.EOL + 50 " // this ain't good code, but it shouldn't trigger this rule" + PMD.EOL + 51 " }" + PMD.EOL + 52 " }" + PMD.EOL + 53 "}"; 54 55 }