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