1   package test.net.sourceforge.pmd.rules.design;
2   
3   import net.sourceforge.pmd.PMD;
4   import net.sourceforge.pmd.rules.design.ExceptionAsFlowControlRule;
5   import test.net.sourceforge.pmd.testframework.SimpleAggregatorTst;
6   import test.net.sourceforge.pmd.testframework.TestDescriptor;
7   
8   public class ExceptionAsFlowControlRuleTest extends SimpleAggregatorTst {
9   
10      public void testAll() {
11         runTests(new TestDescriptor[] {
12             new TestDescriptor(TEST1, "failure case", 1, new ExceptionAsFlowControlRule()),
13             new TestDescriptor(TEST2, "normal throw catch", 0, new ExceptionAsFlowControlRule())
14         });
15      }
16  
17      private static final String TEST1 =
18      "public class Foo {" + PMD.EOL +
19      " void bar() {" + PMD.EOL +
20      "  try {" + PMD.EOL +
21      "   try {" + PMD.EOL +
22      "   } catch (Exception e) {" + PMD.EOL +
23      "    throw new WrapperException(e);" + PMD.EOL +
24      "    // this is essentially a GOTO to the WrapperException catch block" + PMD.EOL +
25      "   }" + PMD.EOL +
26      "  } catch (WrapperException e) {" + PMD.EOL +
27      "   // do some more stuff " + PMD.EOL +
28      "  }" + PMD.EOL +
29      " }" + PMD.EOL +
30      "}";
31  
32      private static final String TEST2 =
33      "public class Foo {" + PMD.EOL +
34      " void bar() {" + PMD.EOL +
35      "  try {} catch (Exception e) {}" + PMD.EOL +
36      " }" + PMD.EOL +
37      "}";
38  }