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.Report;
8   import net.sourceforge.pmd.Rule;
9   import net.sourceforge.pmd.RuleSetNotFoundException;
10  import test.net.sourceforge.pmd.testframework.SimpleAggregatorTst;
11  import test.net.sourceforge.pmd.testframework.TestDescriptor;
12  
13  public class ForLoopShouldBeWhileLoopRuleTest extends SimpleAggregatorTst {
14  
15      private Rule rule;
16  
17      public void setUp() throws RuleSetNotFoundException {
18          rule = findRule("basic", "ForLoopShouldBeWhileLoop");
19      }
20  
21      public void testAll() {
22          runTests(new TestDescriptor[]{
23              new TestDescriptor(TEST1, "simple failure case", 1, rule),
24              new TestDescriptor(TEST2, "ok", 0, rule),
25              new TestDescriptor(TEST3, "for loop like this: for (;;) {} ", 0, rule),
26          });
27      }
28  
29      public void testJDK15ForLoop() throws Throwable {
30          Report rpt = new Report();
31          runTestFromString15(TEST4, rule, rpt);
32          assertEquals(0, rpt.size());
33      }
34  
35      private static final String TEST1 =
36              "public class Foo {" + PMD.EOL +
37              " void foo() {" + PMD.EOL +
38              "  int x = 2;" + PMD.EOL +
39              "  for (;x<5;) { " + PMD.EOL +
40              "   x++;" + PMD.EOL +
41              "  }" + PMD.EOL +
42              " }" + PMD.EOL +
43              "}";
44  
45      private static final String TEST2 =
46              "public class Foo {" + PMD.EOL +
47              " void foo() {" + PMD.EOL +
48              "  for (int x=2;x<5;) { " + PMD.EOL +
49              "   x++;" + PMD.EOL +
50              "  }" + PMD.EOL +
51              " }" + PMD.EOL +
52              "}";
53  
54      private static final String TEST3 =
55              "public class Foo {" + PMD.EOL +
56              " void foo() {" + PMD.EOL +
57              "  for (;;) {}" + PMD.EOL +
58              " }" + PMD.EOL +
59              "}";
60  
61      private static final String TEST4 =
62              "public class Foo {" + PMD.EOL +
63              " void foo() {" + PMD.EOL +
64              "  for (String x : mylist) {}" + PMD.EOL +
65              " }" + PMD.EOL +
66              "}";
67  
68  }