View Javadoc
1   package integrationTests;
2   
3   import static org.junit.jupiter.api.Assertions.assertFalse;
4   import static org.junit.jupiter.api.Assertions.assertTrue;
5   
6   import org.junit.jupiter.api.MethodOrderer;
7   import org.junit.jupiter.api.Test;
8   import org.junit.jupiter.api.TestMethodOrder;
9   
10  @TestMethodOrder(MethodOrderer.MethodName.class)
11  class BooleanExpressionsTest extends CoverageTest {
12      BooleanExpressions tested;
13  
14      @Test
15      void evalBuggyCombination() {
16          // Only this combination will fail if the third condition in eval1 is changed to "z < 0",
17          // which demonstrates that a more sophisticated metric than branch coverage is needed.
18          assertTrue(tested.eval1(true, false, 1));
19  
20          // assertLine(7, 3, 3, 1, 1, 1);
21      }
22  
23      @Test // includes executions from the previous test
24      void evalOnlySomeCombinations() {
25          assertTrue(tested.eval1(true, true, 0));
26          assertFalse(tested.eval1(true, false, 0));
27  
28          // assertLine(7, 3, 3, 3, 3, 2);
29      }
30  
31      @Test
32      void evalAllCombinations() {
33          assertTrue(tested.eval2(true, true, 0));
34          assertTrue(tested.eval2(true, false, 1));
35          assertFalse(tested.eval2(true, false, 0));
36          assertFalse(tested.eval2(false, true, 0));
37  
38          // assertLine(12, 3, 3, 4, 3, 2);
39      }
40  
41      @Test
42      void evalAllPaths() {
43          assertFalse(tested.eval3(false, true, false));
44          assertTrue(tested.eval3(true, true, false));
45          assertTrue(tested.eval3(true, false, true));
46          assertFalse(tested.eval3(true, false, false));
47  
48          // assertLine(17, 3, 3, 4, 3, 2);
49      }
50  
51      @Test
52      void evalOnlyFirstAndSecondBranches() {
53          assertFalse(tested.eval4(false, true, false));
54          assertFalse(tested.eval4(false, false, false));
55          assertFalse(tested.eval4(false, true, true));
56          assertFalse(tested.eval4(false, false, true));
57          assertTrue(tested.eval4(true, false, false));
58          assertTrue(tested.eval4(true, false, true));
59  
60          // assertLine(22, 3, 2, 6, 2, 0);
61      }
62  
63      @Test
64      void eval5() {
65          assertFalse(tested.eval5(false, true, true));
66          assertTrue(tested.eval5(false, false, false));
67  
68          // assertLine(30, 1, 1, 1);
69      }
70  
71      @Test
72      void methodWithComplexExpressionWhichCallsAnotherInSameClass() {
73          BooleanExpressions.isSameTypeIgnoringAutoBoxing(int.class, Integer.class);
74  
75          // TODO: assertions
76      }
77  
78      @Test
79      void trivialMethodWhichReturnsBooleanInput() {
80          assertTrue(tested.simplyReturnsInput(true));
81          assertFalse(tested.simplyReturnsInput(false));
82  
83          assertLine(137, 1, 1, 2);
84      }
85  
86      @Test
87      void methodWhichReturnsNegatedBoolean() {
88          assertTrue(tested.returnsNegatedInput(false));
89  
90          // assertLine(58, 1, 1, 1);
91      }
92  
93      @Test
94      void methodWithIfElseAndTrivialTernaryOperator() {
95          assertTrue(tested.returnsTrivialResultFromInputAfterIfElse(false, 1));
96          assertFalse(tested.returnsTrivialResultFromInputAfterIfElse(true, 0));
97      }
98  
99      @Test
100     void methodWithTrivialTernaryOperatorAndTrivialIfElse() {
101         assertTrue(tested.returnsResultPreviouslyComputedFromInput(false, 1));
102         assertFalse(tested.returnsResultPreviouslyComputedFromInput(false, 0));
103         assertTrue(tested.returnsResultPreviouslyComputedFromInput(true, 1));
104         assertTrue(tested.returnsResultPreviouslyComputedFromInput(true, -1));
105 
106         assertLines(185, 195, 6);
107         assertLine(185, 3, 3, 4, 2, 2);
108         assertLine(188, 1, 1, 4, 3);
109         assertLine(191, 1, 1, 1);
110         assertLine(192, 1, 1, 1);
111         assertLine(195, 1, 1, 4);
112     }
113 }