1   /*
2    * Created on 18.08.2004
3    */
4   package test.net.sourceforge.pmd.dfa;
5   
6   import net.sourceforge.pmd.PMD;
7   import net.sourceforge.pmd.ast.ASTMethodDeclarator;
8   import net.sourceforge.pmd.dfa.IDataFlowNode;
9   import test.net.sourceforge.pmd.testframework.ParserTst;
10  
11  import java.util.List;
12  
13  public class AcceptanceTest extends ParserTst {
14  
15      public void testbook() throws Throwable {
16          getOrderedNodes(ASTMethodDeclarator.class, FOO);
17      }
18  
19      private static final String FOO =
20      "class Foo {" + PMD.EOL +
21      " void bar() {" + PMD.EOL +
22      "  int x = 2;" + PMD.EOL +
23      " }" + PMD.EOL +
24      "}";
25  
26      public void testLabelledBreakLockup() throws Throwable {
27          getOrderedNodes(ASTMethodDeclarator.class, LABELLED_BREAK_LOCKUP);
28      }
29  
30      private static final String LABELLED_BREAK_LOCKUP =
31      "class Foo {" + PMD.EOL +
32      " void bar(int x) {" + PMD.EOL +
33      "  here: if (x>2) {" + PMD.EOL +
34      "   break here;" + PMD.EOL +
35      "  }" + PMD.EOL +
36      " }" + PMD.EOL +
37      "}";
38  
39      private boolean check(int[][] array, List methodNodes) {
40          for (int i=0; i<methodNodes.size(); i++) {
41              ASTMethodDeclarator decl = (ASTMethodDeclarator)methodNodes.get(i);
42              IDataFlowNode inode = decl.getDataFlowNode();
43              for (int j = 0; j < inode.getChildren().size(); j++) {
44                  IDataFlowNode child = (IDataFlowNode) inode.getChildren().get(j);
45                  if (array[i][j] != child.getIndex()-1) {
46                      return false;
47                  }
48              }
49          }
50          return true;
51      }
52  
53      public void test_1() throws Throwable {
54          assertTrue(check(TEST1_NODES, getOrderedNodes(ASTMethodDeclarator.class, TEST1)));
55      }
56      public void test_2() throws Throwable {
57          assertTrue(check(TEST2_NODES, getOrderedNodes(ASTMethodDeclarator.class, TEST2)));
58      }
59      public void test_3() throws Throwable {
60          assertTrue(check(TEST3_NODES, getOrderedNodes(ASTMethodDeclarator.class, TEST3)));
61      }
62      public void test_4() throws Throwable {
63          assertTrue(check(TEST4_NODES, getOrderedNodes(ASTMethodDeclarator.class, TEST4)));
64      }
65      public void test_6() throws Throwable {
66          assertTrue(check(TEST5_NODES, getOrderedNodes(ASTMethodDeclarator.class, TEST6)));
67      }
68      public void test_7() throws Throwable {
69          assertTrue(check(TEST5_NODES, getOrderedNodes(ASTMethodDeclarator.class, TEST7)));
70      }
71      public void test_8() throws Throwable {
72          assertTrue(check(TEST8_NODES, getOrderedNodes(ASTMethodDeclarator.class, TEST8)));
73      }
74      public void test_9() throws Throwable {
75          assertTrue(check(TEST5_NODES, getOrderedNodes(ASTMethodDeclarator.class, TEST9)));
76      }
77      public void test_10() throws Throwable {
78          assertTrue(check(TEST8_NODES, getOrderedNodes(ASTMethodDeclarator.class, TEST10)));
79      }
80      public void test_11() throws Throwable {
81          assertTrue(check(TEST8_NODES, getOrderedNodes(ASTMethodDeclarator.class, TEST11)));
82      }
83      public void test_12() throws Throwable {
84          assertTrue(check(TEST12_NODES, getOrderedNodes(ASTMethodDeclarator.class, TEST12)));
85      }
86      public void test_13() throws Throwable {
87          assertTrue(check(TEST13_NODES, getOrderedNodes(ASTMethodDeclarator.class, TEST13)));
88      }
89      public void test_14() throws Throwable {
90          assertTrue(check(TEST14_NODES, getOrderedNodes(ASTMethodDeclarator.class, TEST14)));
91      }
92      public void test_15() throws Throwable {
93          assertTrue(check(TEST15_NODES, getOrderedNodes(ASTMethodDeclarator.class, TEST15)));
94      }
95      public void test_16() throws Throwable {
96          assertTrue(check(TEST16_NODES, getOrderedNodes(ASTMethodDeclarator.class, TEST16)));
97      }
98      public void test_17() throws Throwable {
99          assertTrue(check(TEST17_NODES, getOrderedNodes(ASTMethodDeclarator.class, TEST17)));
100     }
101     public void test_18() throws Throwable {
102         assertTrue(check(TEST18_NODES, getOrderedNodes(ASTMethodDeclarator.class, TEST18)));
103     }
104     public void test_19() throws Throwable {
105         assertTrue(check(TEST19_NODES, getOrderedNodes(ASTMethodDeclarator.class, TEST19)));
106     }
107     public void test_20() throws Throwable {
108         assertTrue(check(TEST20_NODES, getOrderedNodes(ASTMethodDeclarator.class, TEST20)));
109     }
110     public void test_21() throws Throwable {
111         assertTrue(check(TEST21_NODES, getOrderedNodes(ASTMethodDeclarator.class, TEST21)));
112     }
113     public void test_22() throws Throwable {
114         assertTrue(check(TEST22_NODES, getOrderedNodes(ASTMethodDeclarator.class, TEST22)));
115     }
116     public void test_23() throws Throwable {
117         assertTrue(check(TEST23_NODES, getOrderedNodes(ASTMethodDeclarator.class, TEST23)));
118     }
119     public void test_24() throws Throwable {
120         assertTrue(check(TEST24_NODES, getOrderedNodes(ASTMethodDeclarator.class, TEST24)));
121     }
122     public void test_25() throws Throwable {
123         assertTrue(check(TEST25_NODES, getOrderedNodes(ASTMethodDeclarator.class, TEST25)));
124     }
125     public void test_26() throws Throwable {
126         assertTrue(check(TEST26_NODES, getOrderedNodes(ASTMethodDeclarator.class, TEST26)));
127     }
128     public void test_27() throws Throwable {
129         assertTrue(check(TEST27_NODES, getOrderedNodes(ASTMethodDeclarator.class, TEST27)));
130     }
131     public void test_28() throws Throwable {
132         assertTrue(check(TEST28_NODES, getOrderedNodes(ASTMethodDeclarator.class, TEST28)));
133     }
134     public void test_29() throws Throwable {
135         assertTrue(check(TEST29_NODES, getOrderedNodes(ASTMethodDeclarator.class, TEST29)));
136     }
137     public void test_30() throws Throwable {
138         assertTrue(check(TEST30_NODES, getOrderedNodes(ASTMethodDeclarator.class, TEST30)));
139     }
140 
141     //  first dimension: the index of a node
142     //  second dimension: the indices of the children
143     private static final int[][] TEST1_NODES = {
144             {1},
145             {2},
146             {3},
147             {4, 6},
148             {5},
149             {6},
150             {}
151         };
152 
153     private static final String TEST1 =
154         "class Foo {" + PMD.EOL +
155         " void test_1() {" + PMD.EOL +
156         "  int x = 0;" + PMD.EOL +
157         "  if (x == 0) {" + PMD.EOL +
158         "   x++;" + PMD.EOL +
159         "   x = 0;" + PMD.EOL +
160         "  }" + PMD.EOL +
161         " }"  + PMD.EOL +
162         " }";
163 
164     private static final int[][] TEST2_NODES = {
165             {1},
166             {2},
167             {3},
168             {5, 7},
169             {3},
170             {6},
171             {4},
172             {}
173         };
174 
175     private static final String TEST2 =
176             "class Foo {" + PMD.EOL +
177             " public void test_2() {" + PMD.EOL +
178             "  for (int i = 0; i < 1; i++) {" + PMD.EOL +
179             "   i++;" + PMD.EOL +
180             "   i = 8;" + PMD.EOL +
181             "  }" + PMD.EOL +
182             " }" + PMD.EOL +
183             " }";
184 
185     private static final int[][] TEST3_NODES = {
186             {1},
187             {2},
188             {3},
189             {4, 5},
190             {3},
191             {}
192         };
193     
194     private static final String TEST3 =
195             "public class Foo {" + PMD.EOL +
196             " public void test_3() {" + PMD.EOL +
197             "  for (int i = 0; i < 1; i++) {" + PMD.EOL +
198             "  }" + PMD.EOL +
199             " }" + PMD.EOL +
200             " }";
201 
202 
203     private static final int[][] TEST4_NODES =  {
204             {1},
205             {2},
206             {3},
207             {}
208         };
209 
210     private static final String TEST4 =
211     "public class Foo {" + PMD.EOL +
212     " public void test_4() {" + PMD.EOL +
213     "  for (; ;) {" + PMD.EOL +
214     "  }" + PMD.EOL +
215     " }" + PMD.EOL +
216     " }";
217 
218     private static final int[][] TEST5_NODES =  {
219             {1},
220             {2},
221             {3},
222             {4},
223             {}
224         };
225 
226     private static final String TEST6 =
227     "public class Foo {" + PMD.EOL +
228     " public void test_6() {" + PMD.EOL +
229     "  for (int i = 0; ;) {" + PMD.EOL +
230     "  }" + PMD.EOL +
231     " }" + PMD.EOL +
232     " }";
233 
234     private static final String TEST7 =
235             "public class Foo {" + PMD.EOL +
236             " public void test_7() {" + PMD.EOL +
237             "  for (int i = 0; i < 0;) {" + PMD.EOL +
238             "  }" + PMD.EOL +
239             " }" + PMD.EOL +
240             " }";
241 
242     private static final int[][] TEST8_NODES = {
243             {1},
244             {2},
245             {3},
246             {4, 5},
247             {3},
248             {}
249         };
250 
251     public static final String TEST8 =
252         "public class Foo {" + PMD.EOL +
253         " public void test_8() {" + PMD.EOL +
254         "  for (int i = 0; ; i++) {" + PMD.EOL +
255         "  }" + PMD.EOL +
256         " }" + PMD.EOL +
257             " }";
258 
259     public static final String TEST9 =
260         "public class Foo {" + PMD.EOL +
261             " public void test_9() {" + PMD.EOL +
262             "  int i = 0;" + PMD.EOL +
263             "  for (; i < 0;) {" + PMD.EOL +
264             "  }" + PMD.EOL +
265             " }" + PMD.EOL +
266             " }";
267 
268     public static final String TEST10 =
269         "public class Foo {" + PMD.EOL +
270             " public void test_10() {" + PMD.EOL +
271             "  int i = 0;" + PMD.EOL +
272             "  for (; i < 0; i++) {" + PMD.EOL +
273             "  }" + PMD.EOL +
274             " }" + PMD.EOL +
275             " }";
276 
277     public static final String TEST11 =
278         "public class Foo {" + PMD.EOL +
279             " public void test_11() {" + PMD.EOL +
280             "  int i = 0;" + PMD.EOL +
281             "  for (; ; i++) {" + PMD.EOL +
282             "  }" + PMD.EOL +
283             " }" + PMD.EOL +
284             " }";
285 
286     private static final int[][] TEST12_NODES = {
287             {1},
288             {2},
289             {3},
290             {4, 5},
291             {3},
292             {}
293         };
294     public static final String TEST12 =
295         "public class Foo {" + PMD.EOL +
296             " public void test_12() {" + PMD.EOL +
297             "  for (; ;) {" + PMD.EOL +
298             "   int i = 0;" + PMD.EOL +
299             "  }" + PMD.EOL +
300             " }" + PMD.EOL +
301             " }";
302 
303     private static final int[][] TEST13_NODES = {
304         {1},
305         {2},
306         {3},
307         {5, 9},
308         {3},
309         {6},
310         {7, 8},
311         {8},
312         {4},
313         {}
314         };
315     public static final String TEST13 =
316         "public class Foo {" + PMD.EOL +
317             " public void test_13() {" + PMD.EOL +
318             "  for (int i = 0; i < 0; i++) {" + PMD.EOL +
319             "   i = 9;" + PMD.EOL +
320             "   if (i < 8) {" + PMD.EOL +
321             "    i = 7;" + PMD.EOL +
322             "   }" + PMD.EOL +
323             "   i = 6;" + PMD.EOL +
324             "  }" + PMD.EOL +
325             " }" + PMD.EOL +
326             " }";
327 
328     private static final int[][] TEST14_NODES = {
329         {1},
330         {2},
331         {3},
332         {5, 8},
333         {3},
334         {6},
335         {7, 4},
336         {4},
337         {}
338         };
339     public static final String TEST14 =
340         "public class Foo {" + PMD.EOL +
341             " public void test_14() {" + PMD.EOL +
342             "  for (int i = 0; i < 0; i++) {" + PMD.EOL +
343             "   i = 9;" + PMD.EOL +
344             "   if (i < 8) {" + PMD.EOL +
345             "    i = 7;" + PMD.EOL +
346             "   }" + PMD.EOL +
347             "  }" + PMD.EOL +
348             " }" + PMD.EOL +
349             " }";
350 
351     private static final int[][] TEST15_NODES = {
352         {1},
353         {2},
354         {3},
355         {5, 7},
356         {3},
357         {6, 4},
358         {4},
359         {}
360         };
361     public static final String TEST15 =
362         "public class Foo {" + PMD.EOL +
363             " public void test_15() {" + PMD.EOL +
364             "  for (int i = 0; i < 0; i++) {" + PMD.EOL +
365             "   if (i < 8) {" + PMD.EOL +
366             "    i = 7;" + PMD.EOL +
367             "   }" + PMD.EOL +
368             "  }" + PMD.EOL +
369             " }" + PMD.EOL +
370             " }";
371 
372     private static final int[][] TEST16_NODES = {
373         {1},
374         {2},
375         {3},
376         {5, 8},
377         {3},
378         {6, 7},
379         {4},
380         {4},
381         {}
382         };
383     public static final String TEST16 =
384         "public class Foo {" + PMD.EOL +
385             " public void test_16() {" + PMD.EOL +
386             "  for (int i = 0; i < 0; i++) {" + PMD.EOL +
387             "   if (i < 8) {" + PMD.EOL +
388             "    i = 7;" + PMD.EOL +
389             "   } else {" + PMD.EOL +
390             "    i = 6;" + PMD.EOL +
391             "   }" + PMD.EOL +
392             "  }" + PMD.EOL +
393             " }" + PMD.EOL +
394             " }";
395 
396     private static final int[][] TEST17_NODES = {
397         {1},
398         {2},
399         {3},
400         {5, 10},
401         {3},
402         {6, 7},
403         {4},
404         {8, 9},
405         {4},
406         {4},
407         {}
408         };
409     public static final String TEST17 =
410         "public class Foo {" + PMD.EOL +
411             " public void test_17() {" + PMD.EOL +
412             "  for (int i = 0; i < 0; i++) {" + PMD.EOL +
413             "   if (i < 6) {" + PMD.EOL +
414             "    i = 7;" + PMD.EOL +
415             "   } else if (i > 8) {" + PMD.EOL +
416             "    i = 9;" + PMD.EOL +
417             "   } else {" + PMD.EOL +
418             "    i = 10;" + PMD.EOL +
419             "   }" + PMD.EOL +
420             "  }" + PMD.EOL +
421             " }" + PMD.EOL +
422             " }";
423 
424     private static final int[][] TEST18_NODES = {
425         {1},
426         {2},
427         {3},
428         {5, 9},
429         {3},
430         {6},
431         {8, 4},
432         {6},
433         {7},
434         {}
435         };
436     public static final String TEST18 =
437         "public class Foo {" + PMD.EOL +
438             " public void test_18() {" + PMD.EOL +
439             "  for (int i = 0; i < 0; i++) {" + PMD.EOL +
440             "   for (int j = 0; j < 0; j++) {" + PMD.EOL +
441             "    j++;" + PMD.EOL +
442             "   }" + PMD.EOL +
443             "  }" + PMD.EOL +
444             " }" + PMD.EOL +
445             " }";
446 
447     private static final int[][] TEST19_NODES = {
448         {1},
449         {2},
450         {3},
451         {4, 5},
452         {10},
453         {6, 7},
454         {10},
455         {8, 9},
456         {10},
457         {10},
458         {}
459         };
460     public static final String TEST19 =
461         "public class Foo {" + PMD.EOL +
462             " public void test_19() {" + PMD.EOL +
463             "  int i = 0;" + PMD.EOL +
464             "  if (i == 1) {" + PMD.EOL +
465             "   i = 2;" + PMD.EOL +
466             "  } else if (i == 3) {" + PMD.EOL +
467             "   i = 4;" + PMD.EOL +
468             "  } else if (i == 5) {" + PMD.EOL +
469             "   i = 6;" + PMD.EOL +
470             "  } else {" + PMD.EOL +
471             "   i = 7;" + PMD.EOL +
472             "  }" + PMD.EOL +
473             " }" + PMD.EOL +
474             " }";
475 
476     private static final int[][] TEST20_NODES = {
477         {1},
478         {2},
479         {3},
480         {4, 6},
481         {5, 7},
482         {7},
483         {7},
484         {}
485         };
486     public static final String TEST20 =
487         "public class Foo {" + PMD.EOL +
488             " public void test_20() {" + PMD.EOL +
489             "  int i = 0;" + PMD.EOL +
490             "  if (i == 1) {" + PMD.EOL +
491             "   if (i == 2) {" + PMD.EOL +
492             "    i = 3;" + PMD.EOL +
493             "   }" + PMD.EOL +
494             "  } else {" + PMD.EOL +
495             "   i = 7;" + PMD.EOL +
496             "  }" + PMD.EOL +
497             " }" + PMD.EOL +
498             " }";
499 
500     private static final int[][] TEST21_NODES = {
501         {1},
502         {2},
503         {3},
504         {4, 9},
505         {5},
506         {7, 8},
507         {5},
508         {6},
509         {11},
510         {10, 11},
511         {11},
512         {}
513         };
514     public static final String TEST21 =
515         "public class Foo {" + PMD.EOL +
516             " public void test_21() {" + PMD.EOL +
517             "  int i = 0;" + PMD.EOL +
518             "  if (i == 1) {" + PMD.EOL +
519             "   for (i = 3; i < 4; i++) {" + PMD.EOL +
520             "    i = 5;" + PMD.EOL +
521             "   }" + PMD.EOL +
522             "   i++;" + PMD.EOL +
523             "  } else if (i < 6) {" + PMD.EOL +
524             "   i = 7;" + PMD.EOL +
525             "  }" + PMD.EOL +
526             " }" + PMD.EOL +
527             " }";
528 
529     private static final int[][] TEST22_NODES = {
530         {1},
531         {2},
532         {3},
533         {4, 8},
534         {5},
535         {7, 9},
536         {5},
537         {6},
538         {9},
539         {}
540         };
541     public static final String TEST22 =
542         "public class Foo {" + PMD.EOL +
543             " public void test_22() {" + PMD.EOL +
544             "  int i = 0;" + PMD.EOL +
545             "  if (i == 1) {" + PMD.EOL +
546             "   for (i = 3; i < 4; i++) {" + PMD.EOL +
547             "    i = 5;" + PMD.EOL +
548             "   }" + PMD.EOL +
549             "  } else {" + PMD.EOL +
550             "   i = 7;" + PMD.EOL +
551             "  }" + PMD.EOL +
552             " }" + PMD.EOL +
553             " }";
554 
555     private static final int[][] TEST23_NODES = {
556         {1},
557         {2},
558         {3},
559         {4, 8},
560         {5},
561         {7, 10},
562         {5},
563         {6},
564         {9, 10},
565         {10},
566         {}
567         };
568     public static final String TEST23 =
569         "public class Foo {" + PMD.EOL +
570             " public void test_23() {" + PMD.EOL +
571             "  int i = 0;" + PMD.EOL +
572             "  if (i == 1) {" + PMD.EOL +
573             "   for (i = 3; i < 4; i++) {" + PMD.EOL +
574             "    i = 5;" + PMD.EOL +
575             "   }" + PMD.EOL +
576             "  } else if (i < 6) {" + PMD.EOL +
577             "   i = 7;" + PMD.EOL +
578             "  }" + PMD.EOL +
579             " }" + PMD.EOL +
580             " }";
581 
582     private static final int[][] TEST24_NODES = {
583         {1},
584         {2},
585         {3},
586         {4, 9},
587         {5},
588         {7, 11},
589         {5},
590         {8, 6},
591         {6},
592         {10, 11},
593         {11},
594         {}
595         };
596     public static final String TEST24 =
597         "public class Foo {" + PMD.EOL +
598             " public void test_24() {" + PMD.EOL +
599             "  int x = 0;" + PMD.EOL +
600             "  if (x > 2) {" + PMD.EOL +
601             "   for (int i = 0; i < 1; i++) {" + PMD.EOL +
602             "    if (x > 3) {" + PMD.EOL +
603             "     x++;" + PMD.EOL +
604             "    }" + PMD.EOL +
605             "   }" + PMD.EOL +
606             "  } else if (x > 4) {" + PMD.EOL +
607             "   x++;" + PMD.EOL +
608             "  }" + PMD.EOL +
609             " }" + PMD.EOL +
610             " }";
611 
612     private static final int[][] TEST25_NODES = {
613         {1},
614         {2},
615         {3},
616         {4,5},
617         {5},
618         {}
619         };
620     public static final String TEST25 =
621         "public class Foo {" + PMD.EOL +
622             " public void test_25() {" + PMD.EOL +
623             "  int x = 0;" + PMD.EOL +
624             "  switch (x) {" + PMD.EOL +
625             "   default:" + PMD.EOL +
626             "    x = 9;" + PMD.EOL +
627             "  }" + PMD.EOL +
628             " }" + PMD.EOL +
629             " }";
630 
631     private static final int[][] TEST26_NODES = {
632         {1},
633         {2},
634         {3},
635         {4},
636         {5, 6},
637         {6},
638         {7},
639         {8, 3},
640         {9},
641         {}
642         };
643     public static final String TEST26 =
644         "public class Foo {" + PMD.EOL +
645             " public void test_26() {" + PMD.EOL +
646             "  int x = 0;" + PMD.EOL +
647             "  do {" + PMD.EOL +
648             "   if (x > 0) {" + PMD.EOL +
649             "    x++;" + PMD.EOL +
650             "   }" + PMD.EOL +
651             "   x++;" + PMD.EOL +
652             "  } while (x < 9);" + PMD.EOL +
653             "  x++;" + PMD.EOL +
654             " }" + PMD.EOL +
655             " }";
656 
657     private static final int[][] TEST27_NODES = {
658         {1},
659         {2},
660         {3},
661         {5, 9},
662         {3},
663         {6},
664         {7},
665         {8},
666         {6, 4},
667         {}
668         };
669     public static final String TEST27 =
670         "public class Foo {" + PMD.EOL +
671             " public void test_27() {" + PMD.EOL +
672             "  for (int i = 0; i < 36; i++) {" + PMD.EOL +
673             "   int x = 0;" + PMD.EOL +
674             "   do {" + PMD.EOL +
675             "    x++;" + PMD.EOL +
676             "   } while (x < 9);" + PMD.EOL +
677             "  }" + PMD.EOL +
678             " }" + PMD.EOL +
679             " }";
680 
681     private static final int[][] TEST28_NODES = {
682         {1},
683         {2},
684         {3},
685         {5, 14},
686         {3},
687         {6},
688         {7},
689         {8, 12},
690         {9},
691         {10, 12},
692         {11},
693         {12},
694         {13},
695         {6, 4},
696         {}
697         };
698     public static final String TEST28 =
699         "public class Foo {" + PMD.EOL +
700             " private void test_28() {" + PMD.EOL +
701             "  for (int i = 0; i < 36; i++) {" + PMD.EOL +
702             "   int x = 0;" + PMD.EOL +
703             "   do {" + PMD.EOL +
704             "    if (x > 0) {" + PMD.EOL +
705             "     x++;" + PMD.EOL +
706             "     switch (i) {" + PMD.EOL +
707             "      case 0:" + PMD.EOL +
708             "       x = 0;" + PMD.EOL +
709             "       break;" + PMD.EOL +
710             "     }" + PMD.EOL +
711             "    }" + PMD.EOL +
712             "    x++;" + PMD.EOL +
713             "   } while (x < 9);" + PMD.EOL +
714             "  }" + PMD.EOL +
715             " }" + PMD.EOL +
716             " }";
717 
718     private static final int[][] TEST29_NODES = {
719                {1},
720                {2},
721                {3,4,5},
722                {6},
723                {6},
724                {6},
725                {}
726 
727         };
728     public static final String TEST29 =
729         "public class Foo {" + PMD.EOL +
730         " private void test_29() {" + PMD.EOL +
731         "  switch(x) {" + PMD.EOL +
732         "   case 1:" + PMD.EOL +
733         "    break; " + PMD.EOL +
734         "   default: " + PMD.EOL +
735         "    break;" + PMD.EOL +
736         "   case 2:" + PMD.EOL +
737         "    break;" + PMD.EOL +
738         "  }" + PMD.EOL +
739         " }" + PMD.EOL +
740         "}";
741 
742     private static final int[][] TEST30_NODES = {
743                {1},
744                {2},
745                {3},
746                {4,7},
747                {5,6},
748                {4},
749                {3},
750                {}
751         };
752     public static final String TEST30 =
753         "public class Foo {" + PMD.EOL +
754         " private void test_30() {" + PMD.EOL +
755         "  int x = 0;" + PMD.EOL +
756         "  while (true) {" + PMD.EOL +
757         "   while (x>0) {" + PMD.EOL +
758         "     x++;" + PMD.EOL +
759         "   }" + PMD.EOL +
760         "   continue;" + PMD.EOL +
761         "  }" + PMD.EOL +
762         " }" + PMD.EOL +
763         "}";
764 }