View Javadoc
1   /*
2    * MIT License
3    * Copyright (c) 2006-2025 JMockit developers
4    * See LICENSE file for full license text.
5    */
6   package integration.tests.other.control.structures;
7   
8   import org.junit.jupiter.api.Test;
9   
10  import integration.tests.CoverageTest;
11  
12  class SwitchStatementsTest extends CoverageTest {
13      final SwitchStatements tested = new SwitchStatements();
14  
15      @Test
16      void switchStatementWithSparseCasesAndDefault() {
17          tested.switchStatementWithSparseCasesAndDefault('A');
18          tested.switchStatementWithSparseCasesAndDefault('\0');
19  
20          assertLines(10, 25, 5);
21          assertLine(10, 1, 1, 2);
22          assertLine(12, 1, 1, 1);
23          assertLine(13, 1, 1, 1);
24          assertLine(21, 1, 1, 1);
25          assertLine(23, 1, 0, 0);
26          assertLine(25, 1, 1, 1);
27      }
28  
29      @Test
30      void switchStatementWithSparseCasesAndDefaultOnDefaultCase() {
31          tested.anotherSwitchStatementWithSparseCasesAndDefault('x');
32  
33          // TODO: assertions
34      }
35  
36      @Test
37      void switchStatementWithCompactCasesAndDefault() {
38          tested.switchStatementWithCompactCasesAndDefault(2);
39          tested.switchStatementWithCompactCasesAndDefault(4);
40  
41          // TODO: assertions
42      }
43  
44      @Test
45      void switchStatementWithCompactCasesAndDefaultOnDefaultCase() {
46          tested.anotherSwitchStatementWithCompactCasesAndDefault(1);
47          tested.anotherSwitchStatementWithCompactCasesAndDefault(5);
48  
49          assertLines(56, 62, 4);
50          assertLine(57, 1, 1, 2);
51          assertLine(58, 1, 1, 1);
52          assertLine(59, 1, 1, 1);
53          assertLine(62, 1, 1, 2);
54      }
55  
56      @Test
57      void switchStatementWithSparseCasesAndNoDefault() {
58          tested.switchStatementWithSparseCasesAndNoDefault('f');
59          tested.switchStatementWithSparseCasesAndNoDefault('b');
60  
61          assertLines(65, 73, 3);
62          assertLine(65, 1, 1, 2);
63          assertLine(67, 1, 0, 0);
64          assertLine(68, 1, 0, 0);
65          assertLine(70, 1, 1, 1);
66          assertLine(71, 0, 0, 0);
67          assertLine(73, 1, 1, 2);
68      }
69  
70      @Test
71      void switchStatementWithCompactCasesAndNoDefault() {
72          tested.switchStatementWithCompactCasesAndNoDefault(0);
73          tested.switchStatementWithCompactCasesAndNoDefault(4);
74          tested.switchStatementWithCompactCasesAndNoDefault(5);
75  
76          assertLines(76, 86, 4);
77          assertLine(76, 1, 1, 3);
78          assertLine(79, 1, 1, 3);
79          assertLine(80, 1, 0, 0);
80          assertLine(81, 1, 0, 0);
81          assertLine(82, 1, 1, 1);
82          assertLine(86, 1, 1, 3);
83      }
84  
85      @Test
86      void switchStatementWithExitInAllCases() {
87          tested.switchStatementWithExitInAllCases(1);
88          tested.switchStatementWithExitInAllCases(2);
89  
90          assertLines(90, 96, 3);
91          assertLine(90, 1, 1, 2);
92          assertLine(92, 1, 1, 1);
93          assertLine(94, 1, 1, 1);
94          assertLine(96, 1, 0, 0);
95      }
96  
97      @Test
98      void switchOnString() {
99          tested.switchOnString("A", true);
100         tested.switchOnString("M", false);
101 
102         assertLines(101, 105, 3);
103         assertLine(101, 1, 1, 2);
104         assertLine(105, 1, 1, 1);
105     }
106 }