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 net.sourceforge.pmd.rules.AvoidDeeplyNestedIfStmtsRule;
9   import test.net.sourceforge.pmd.testframework.RuleTst;
10  
11  public class AvoidDeeplyNestedIfStmtsRuleTest extends RuleTst {
12  
13      public static final String TEST1 =
14      "public class AvoidDeeplyNestedIfStmtsRule1 {" + PMD.EOL +
15      " public void bar() { " + PMD.EOL +
16      "  int x=2; " + PMD.EOL +
17      "  int y=3; " + PMD.EOL +
18      "  int z=4; " + PMD.EOL +
19      "  if (x>y) { " + PMD.EOL +
20      "   if (y>z) { " + PMD.EOL +
21      "    if (z==x) { " + PMD.EOL +
22      "     // this is officially out of control now " + PMD.EOL +
23      "    } " + PMD.EOL +
24      "   } " + PMD.EOL +
25      "  }" + PMD.EOL +
26      " }" + PMD.EOL +
27      "}";
28  
29      public static final String TEST2 =
30      "public class AvoidDeeplyNestedIfStmtsRule2 {" + PMD.EOL +
31      " public void bar() { " + PMD.EOL +
32      "  if (true) {" + PMD.EOL +
33      "  } else if (true) {" + PMD.EOL +
34      "  } else if (true) {" + PMD.EOL +
35      "  } else {" + PMD.EOL +
36      "    // this ain't good code, but it shouldn't trigger this rule" + PMD.EOL +
37      "  }" + PMD.EOL +
38      " }" + PMD.EOL +
39      "}";
40  
41      private Rule rule;
42  
43      public void setUp() {
44          rule = new AvoidDeeplyNestedIfStmtsRule();
45          rule.addProperty("problemDepth", "3");
46      }
47  
48      public void test1() throws Throwable {
49          runTestFromString(TEST1, 1, rule);
50      }
51  
52      public void test2() throws Throwable {
53          runTestFromString(TEST2, 0, rule);
54      }
55  }