Line | Branch | Condition | Decision | Exec | Source |
---|---|---|---|---|---|
1 | #include "stdint.h" | ||||
2 | #include "stdbool.h" | ||||
3 | |||||
4 | #if (defined __GNUC__ && (__GNUC__ >= 6)) || (defined __clang_major__) | ||||
5 | #include "switch_test.h" | ||||
6 | #endif | ||||
7 | |||||
8 | 1 | bool checkBiggerTrue(int a) | |||
9 | { | ||||
10 |
1/2✓ Branch 0 (2→3) taken 1 times.
✗ Branch 1 (2→4) not taken.
|
1/2✗ False not covered.
|
1/2✓ Decision 'true' taken 1 times.
✗ Decision 'false' not taken.
|
1 | if (a > 5) |
11 | { | ||||
12 | 1 | return true; | |||
13 | } | ||||
14 | else | ||||
15 | { | ||||
16 | ✗ | return false; | |||
17 | } | ||||
18 | } | ||||
19 | |||||
20 | 1 | bool checkBiggerFalse(int a) | |||
21 | { | ||||
22 |
1/2✗ Branch 0 (2→3) not taken.
✓ Branch 1 (2→4) taken 1 times.
|
1/2✗ True not covered.
|
1/2✗ Decision 'true' not taken.
✓ Decision 'false' taken 1 times.
|
1 | if (a > 5) |
23 | { | ||||
24 | ✗ | return true; | |||
25 | } | ||||
26 | else | ||||
27 | { | ||||
28 | 1 | return false; | |||
29 | } | ||||
30 | } | ||||
31 | |||||
32 | 2 | bool checkBiggerBoth(int a) | |||
33 | { | ||||
34 |
2/2✓ Branch 0 (2→3) taken 1 times.
✓ Branch 1 (2→4) taken 1 times.
|
2/2✓ Fully covered.
|
2/2✓ Decision 'true' taken 1 times.
✓ Decision 'false' taken 1 times.
|
2 | if (a > 5) |
35 | { | ||||
36 | 1 | return true; | |||
37 | } | ||||
38 | else | ||||
39 | { | ||||
40 | 1 | return false; | |||
41 | } | ||||
42 | } | ||||
43 | |||||
44 | 1 | bool checkSmallerTrue(int a) | |||
45 | { | ||||
46 |
1/2✓ Branch 0 (2→3) taken 1 times.
✗ Branch 1 (2→4) not taken.
|
1/2✗ False not covered.
|
1/2✓ Decision 'true' taken 1 times.
✗ Decision 'false' not taken.
|
1 | if (a < 5) |
47 | { | ||||
48 | 1 | return true; | |||
49 | } | ||||
50 | else | ||||
51 | { | ||||
52 | ✗ | return false; | |||
53 | } | ||||
54 | } | ||||
55 | |||||
56 | 1 | bool checkSmallerFalse(int a) | |||
57 | { | ||||
58 |
1/2✗ Branch 0 (2→3) not taken.
✓ Branch 1 (2→4) taken 1 times.
|
1/2✗ True not covered.
|
1/2✗ Decision 'true' not taken.
✓ Decision 'false' taken 1 times.
|
1 | if (a < 5) |
59 | { | ||||
60 | ✗ | return true; | |||
61 | } | ||||
62 | else | ||||
63 | { | ||||
64 | 1 | return false; | |||
65 | } | ||||
66 | } | ||||
67 | |||||
68 | 1 | bool checkEqualTrue(int a) | |||
69 | { | ||||
70 |
1/2✓ Branch 0 (2→3) taken 1 times.
✗ Branch 1 (2→4) not taken.
|
1/2✗ False not covered.
|
1/2✓ Decision 'true' taken 1 times.
✗ Decision 'false' not taken.
|
1 | if (a == 5) |
71 | { | ||||
72 | 1 | return true; | |||
73 | } | ||||
74 | else | ||||
75 | { | ||||
76 | ✗ | return false; | |||
77 | } | ||||
78 | } | ||||
79 | |||||
80 | 1 | bool checkEqualFalse(int a) | |||
81 | { | ||||
82 |
1/2✗ Branch 0 (2→3) not taken.
✓ Branch 1 (2→4) taken 1 times.
|
1/2✗ True not covered.
|
1/2✗ Decision 'true' not taken.
✓ Decision 'false' taken 1 times.
|
1 | if (a == 5) |
83 | { | ||||
84 | ✗ | return true; | |||
85 | } | ||||
86 | else | ||||
87 | { | ||||
88 | 1 | return false; | |||
89 | } | ||||
90 | } | ||||
91 | |||||
92 | 1 | bool checkNotEqualTrue(int a) | |||
93 | { | ||||
94 |
1/2✓ Branch 0 (2→3) taken 1 times.
✗ Branch 1 (2→4) not taken.
|
1/2✗ False not covered.
|
1/2✓ Decision 'true' taken 1 times.
✗ Decision 'false' not taken.
|
1 | if (a != 5) |
95 | { | ||||
96 | 1 | return true; | |||
97 | } | ||||
98 | else | ||||
99 | { | ||||
100 | ✗ | return false; | |||
101 | } | ||||
102 | } | ||||
103 | |||||
104 | 1 | bool checkNotEqualFalse(int a) | |||
105 | { | ||||
106 |
1/2✗ Branch 0 (2→3) not taken.
✓ Branch 1 (2→4) taken 1 times.
|
1/2✗ True not covered.
|
1/2✗ Decision 'true' not taken.
✓ Decision 'false' taken 1 times.
|
1 | if (a != 5) |
107 | { | ||||
108 | ✗ | return true; | |||
109 | } | ||||
110 | else | ||||
111 | { | ||||
112 | 1 | return false; | |||
113 | } | ||||
114 | } | ||||
115 | |||||
116 | 1 | bool checkComplexTrue(int a) | |||
117 | { | ||||
118 |
3/6✓ Branch 0 (2→3) taken 1 times.
✗ Branch 1 (2→5) not taken.
✓ Branch 2 (3→4) taken 1 times.
✗ Branch 3 (3→6) not taken.
✓ Branch 4 (4→5) taken 1 times.
✗ Branch 5 (4→6) not taken.
|
2/6✗ Condition 0: Not covered.
✗ Condition 1: False not covered.
✗ Condition 2: False not covered.
|
1/2✓ Decision 'true' taken 1 times.
✗ Decision 'false' not taken.
|
1 | if (a == 5 || (a > 5 && a < 10)) |
119 | { | ||||
120 | 1 | return true; | |||
121 | } | ||||
122 | else | ||||
123 | { | ||||
124 | ✗ | return false; | |||
125 | } | ||||
126 | } | ||||
127 | |||||
128 | 1 | bool checkComplexFalse(int a) | |||
129 | { | ||||
130 |
2/6✓ Branch 0 (2→3) taken 1 times.
✗ Branch 1 (2→5) not taken.
✗ Branch 2 (3→4) not taken.
✓ Branch 3 (3→6) taken 1 times.
✗ Branch 4 (4→5) not taken.
✗ Branch 5 (4→6) not taken.
|
2/6✗ Condition 0: True not covered.
✗ Condition 1: True not covered.
✗ Condition 2: Not covered.
|
1/2✗ Decision 'true' not taken.
✓ Decision 'false' taken 1 times.
|
1 | if (a == 5 || (a > 5 && a < 10)) |
131 | { | ||||
132 | ✗ | return true; | |||
133 | } | ||||
134 | else | ||||
135 | { | ||||
136 | 1 | return false; | |||
137 | } | ||||
138 | } | ||||
139 | |||||
140 | 1 | bool checkElseIf1(int a) | |||
141 | { | ||||
142 |
1/2✓ Branch 0 (2→3) taken 1 times.
✗ Branch 1 (2→4) not taken.
|
1/2✗ False not covered.
|
1/2✓ Decision 'true' taken 1 times.
✗ Decision 'false' not taken.
|
1 | if (a == 5) |
143 | { | ||||
144 | 1 | return true; | |||
145 | } | ||||
146 |
0/2✗ Decision 'true' not taken.
✗ Decision 'false' not taken.
|
✗ | else if (a == 9) | ||
147 | { | ||||
148 | ✗ | return true; | |||
149 | } | ||||
150 | else | ||||
151 | { | ||||
152 | ✗ | return false; | |||
153 | } | ||||
154 | } | ||||
155 | |||||
156 | 1 | bool checkElseIf2(int a) | |||
157 | { | ||||
158 |
1/2✗ Branch 0 (2→3) not taken.
✓ Branch 1 (2→4) taken 1 times.
|
1/2✗ True not covered.
|
1/2✗ Decision 'true' not taken.
✓ Decision 'false' taken 1 times.
|
1 | if (a == 5) |
159 | { | ||||
160 | ✗ | return true; | |||
161 | } | ||||
162 |
1/2✓ Branch 0 (4→5) taken 1 times.
✗ Branch 1 (4→6) not taken.
|
1/2✗ False not covered.
|
1/2✓ Decision 'true' taken 1 times.
✗ Decision 'false' not taken.
|
1 | else if (a == 10) |
163 | { | ||||
164 | 1 | return true; | |||
165 | } | ||||
166 | else | ||||
167 | { | ||||
168 | ✗ | return false; | |||
169 | } | ||||
170 | } | ||||
171 | |||||
172 | 1 | bool checkElseIf3(int a) | |||
173 | { | ||||
174 |
1/2✗ Branch 0 (2→3) not taken.
✓ Branch 1 (2→4) taken 1 times.
|
1/2✗ True not covered.
|
1/2✗ Decision 'true' not taken.
✓ Decision 'false' taken 1 times.
|
1 | if (a == 5) |
175 | { | ||||
176 | ✗ | return true; | |||
177 | } | ||||
178 |
1/2✗ Branch 0 (4→5) not taken.
✓ Branch 1 (4→6) taken 1 times.
|
1/2✗ True not covered.
|
1/2✗ Decision 'true' not taken.
✓ Decision 'false' taken 1 times.
|
1 | else if (a == 10) |
179 | { | ||||
180 | ✗ | return true; | |||
181 | } | ||||
182 | else | ||||
183 | { | ||||
184 | 1 | return false; | |||
185 | } | ||||
186 | } | ||||
187 | |||||
188 | 1 | bool checkSwitch1(int a) | |||
189 | { | ||||
190 |
1/3✓ Branch 0 (2→3) taken 1 times.
✗ Branch 1 (2→4) not taken.
✗ Branch 2 (2→5) not taken.
|
1 | switch (a) | ||
191 | { | ||||
192 |
1/1✓ Decision 'true' taken 1 times.
|
1 | case 5: return true; break; | ||
193 | /* Comment */ | ||||
194 |
0/1✗ Decision 'true' not taken.
|
✗ | case 10: | ||
195 | /* Comment */ | ||||
196 | ✗ | return true; | |||
197 | /* Comment */ | ||||
198 | break; | ||||
199 | /* Comment */ | ||||
200 |
0/1✗ Decision 'true' not taken.
|
✗ | default: | ||
201 | /* Comment */ | ||||
202 | ✗ | return false; | |||
203 | /* Comment */ | ||||
204 | break; | ||||
205 | /* Comment */ | ||||
206 | } | ||||
207 | } | ||||
208 | |||||
209 | 1 | bool checkSwitch2(int a) | |||
210 | { | ||||
211 |
1/3✗ Branch 0 (2→3) not taken.
✓ Branch 1 (2→4) taken 1 times.
✗ Branch 2 (2→5) not taken.
|
1 | switch (a) | ||
212 | { | ||||
213 |
0/1✗ Decision 'true' not taken.
|
✗ | case 5: | ||
214 | ✗ | return true; | |||
215 | break; | ||||
216 |
1/1✓ Decision 'true' taken 1 times.
|
1 | case 10: | ||
217 | 1 | return true; | |||
218 | break; | ||||
219 |
0/1✗ Decision 'true' not taken.
|
✗ | default: | ||
220 | ✗ | return false; | |||
221 | break; | ||||
222 | } | ||||
223 | } | ||||
224 | |||||
225 | 1 | bool checkSwitch3(int a) | |||
226 | { | ||||
227 |
1/3✗ Branch 0 (2→3) not taken.
✗ Branch 1 (2→4) not taken.
✓ Branch 2 (2→5) taken 1 times.
|
1 | switch (a) | ||
228 | { | ||||
229 |
0/1✗ Decision 'true' not taken.
|
✗ | case 5: | ||
230 | ✗ | return true; | |||
231 | break; | ||||
232 |
0/1✗ Decision 'true' not taken.
|
✗ | case 10: | ||
233 | ✗ | return true; | |||
234 | break; | ||||
235 |
1/1✓ Decision 'true' taken 1 times.
|
1 | default: | ||
236 | 1 | return false; | |||
237 | break; | ||||
238 | } | ||||
239 | } | ||||
240 | |||||
241 | 1 | bool checkCompactBranch1True(int a) | |||
242 | { | ||||
243 |
1/2✓ Branch 0 (2→3) taken 1 times.
✗ Branch 1 (2→4) not taken.
|
1/2✗ False not covered.
|
1/2✓ Decision 'true' taken 1 times.
✗ Decision 'false' not taken.
|
1 | if (a > 5) { return true; } else { return false; } |
244 | } | ||||
245 | |||||
246 | 1 | bool checkCompactBranch1False(int a) | |||
247 | { | ||||
248 |
1/2✗ Branch 0 (2→3) not taken.
✓ Branch 1 (2→4) taken 1 times.
|
1/2✗ True not covered.
|
1/2✗ Decision 'true' not taken.
✓ Decision 'false' taken 1 times.
|
1 | if (a > 5) { return true; } else { return false; } |
249 | } | ||||
250 | |||||
251 | 1 | bool checkCompactBranch2True(int a) | |||
252 | { | ||||
253 |
2/4✓ Branch 0 (2→3) taken 1 times.
✗ Branch 1 (2→5) not taken.
✓ Branch 2 (3→4) taken 1 times.
✗ Branch 3 (3→5) not taken.
|
2/4✗ Condition 0: False not covered.
✗ Condition 1: False not covered.
|
0/1? Decision couldn't be analyzed.
|
1 | if (a > 5 && a < 10) { return true; } else { return false; } |
254 | } | ||||
255 | |||||
256 | 1 | bool checkCompactBranch2False(int a) | |||
257 | { | ||||
258 |
1/4✗ Branch 0 (2→3) not taken.
✓ Branch 1 (2→5) taken 1 times.
✗ Branch 2 (3→4) not taken.
✗ Branch 3 (3→5) not taken.
|
1/4✗ Condition 0: True not covered.
✗ Condition 1: Not covered.
|
0/1? Decision couldn't be analyzed.
|
1 | if (a > 5 && a < 10) { return true; } else { return false; } |
259 | } | ||||
260 | |||||
261 | 1 | bool checkTernary1True(int a) | |||
262 | { | ||||
263 | 1 | return (a == 5) ? true : false; | |||
264 | } | ||||
265 | |||||
266 | 1 | bool checkTernary1False(int a) | |||
267 | { | ||||
268 | 1 | return (a == 5) ? true : false; | |||
269 | } | ||||
270 | |||||
271 | 1 | bool checkTernary2True(int a) | |||
272 | { | ||||
273 |
2/4✓ Branch 0 (2→3) taken 1 times.
✗ Branch 1 (2→5) not taken.
✓ Branch 2 (3→4) taken 1 times.
✗ Branch 3 (3→5) not taken.
|
2/4✗ Condition 0: False not covered.
✗ Condition 1: False not covered.
|
1 | return (a > 5 && a < 10) ? true : false; | |
274 | } | ||||
275 | |||||
276 | 1 | bool checkTernary2False(int a) | |||
277 | { | ||||
278 |
1/4✗ Branch 0 (2→3) not taken.
✓ Branch 1 (2→5) taken 1 times.
✗ Branch 2 (3→4) not taken.
✗ Branch 3 (3→5) not taken.
|
1/4✗ Condition 0: True not covered.
✗ Condition 1: Not covered.
|
1 | return (a > 5 && a < 10) ? true : false; | |
279 | } | ||||
280 | |||||
281 | 1 | bool checkSplittedTrue(int a) | |||
282 | { | ||||
283 |
2/4✓ Branch 0 (2→3) taken 1 times.
✗ Branch 1 (2→5) not taken.
✓ Branch 2 (3→4) taken 1 times.
✗ Branch 3 (3→5) not taken.
|
2/4✗ Condition 0-0: False not covered.
✗ Condition 1-0: False not covered.
|
1/2✗ Decision 'true' not taken.
✓ Decision 'false' taken 1 times.
|
1 | if (a > 5) if (a < 10) return true; |
284 | ✗ | return false; | |||
285 | } | ||||
286 | |||||
287 | 1 | bool checkSplittedFalse(int a) | |||
288 | { | ||||
289 |
1/4✗ Branch 0 (2→3) not taken.
✓ Branch 1 (2→5) taken 1 times.
✗ Branch 2 (3→4) not taken.
✗ Branch 3 (3→5) not taken.
|
1/4✗ Condition 0-0: True not covered.
✗ Condition 1-0: Not covered.
|
1/2✓ Decision 'true' taken 1 times.
✗ Decision 'false' not taken.
|
1 | if (a > 5) if (a < 10) return true; |
290 | 1 | return false; | |||
291 | } | ||||
292 | |||||
293 | 1 | int checkForLoop(int a) | |||
294 | { | ||||
295 | 1 | int temp = 0; | |||
296 |
2/2✓ Branch 0 (4→3) taken 5 times.
✓ Branch 1 (4→5) taken 1 times.
|
2/2✓ Fully covered.
|
2/2✓ Decision 'true' taken 5 times.
✓ Decision 'false' taken 1 times.
|
6 | for (int i = 0; i < a; i++) |
297 | { | ||||
298 | 5 | temp += a; | |||
299 | } | ||||
300 | 1 | return temp; | |||
301 | } | ||||
302 | |||||
303 | 1 | int checkComplexForLoop(int a) | |||
304 | { | ||||
305 | 1 | int temp = 0; | |||
306 |
3/4✓ Branch 0 (4→5) taken 5 times.
✓ Branch 1 (4→6) taken 1 times.
✓ Branch 2 (5→3) taken 5 times.
✗ Branch 3 (5→6) not taken.
|
3/4✓ Condition 0: Fully covered.
✗ Condition 1: False not covered.
|
0/1? Decision couldn't be analyzed.
|
6 | for (int i = 0; i < a && a < 6; i++) |
307 | { | ||||
308 | 5 | temp += a; | |||
309 | } | ||||
310 | 1 | return temp; | |||
311 | } | ||||
312 | |||||
313 | 1 | int checkWhileLoop(int a) | |||
314 | { | ||||
315 | 1 | int temp = 0; | |||
316 | 1 | int counter = 0; | |||
317 | |||||
318 |
2/2✓ Branch 0 (4→3) taken 5 times.
✓ Branch 1 (4→5) taken 1 times.
|
2/2✓ Fully covered.
|
2/2✓ Decision 'true' taken 5 times.
✓ Decision 'false' taken 1 times.
|
6 | while (counter < a) |
319 | { | ||||
320 | 5 | counter++; | |||
321 | 5 | temp += a; | |||
322 | } | ||||
323 | |||||
324 | 1 | return temp; | |||
325 | } | ||||
326 | |||||
327 | 1 | int checkDoWhileLoop(int a) | |||
328 | { | ||||
329 | 1 | int temp = 0; | |||
330 | 1 | int counter = 0; | |||
331 | |||||
332 | do | ||||
333 | { | ||||
334 | 5 | counter++; | |||
335 | 5 | temp += a; | |||
336 |
2/2✓ Branch 0 (3→4) taken 4 times.
✓ Branch 1 (3→5) taken 1 times.
|
2/2✓ Fully covered.
|
2/2✓ Decision 'true' taken 4 times.
✓ Decision 'false' taken 1 times.
|
5 | } while (counter < a); |
337 | |||||
338 | 1 | return temp; | |||
339 | } | ||||
340 | |||||
341 | 1 | bool checkInterpreter(int a) | |||
342 | { | ||||
343 | 1 | char test1[] = " while "; | |||
344 | 1 | a++; | |||
345 | |||||
346 | 1 | char test2[] = " for "; | |||
347 | { | ||||
348 | 1 | a++; | |||
349 | } | ||||
350 | |||||
351 | 1 | char test3[] = " if("; | |||
352 | 1 | a++; | |||
353 | |||||
354 | 1 | char test4[] = " do "; | |||
355 | 1 | a++; | |||
356 | |||||
357 |
1/2✓ Branch 0 (2→3) taken 1 times.
✗ Branch 1 (2→4) not taken.
|
1/2✗ False not covered.
|
1/2✓ Decision 'true' taken 1 times.
✗ Decision 'false' not taken.
|
1 | if (a > 5) |
358 | { | ||||
359 | 1 | return true; | |||
360 | } | ||||
361 | |||||
362 | ✗ | return false; | |||
363 | } | ||||
364 | |||||
365 | 2 | void verify_issue_679(const bool b) { | |||
366 |
2/2✓ Branch 0 (2→3) taken 1 times.
✓ Branch 1 (2→6) taken 1 times.
|
2/2✓ Fully covered.
|
2/2✓ Decision 'true' taken 1 times.
✓ Decision 'false' taken 1 times.
|
2 | if (b) { |
367 |
2/2✓ Branch 0 (5→4) taken 10 times.
✓ Branch 1 (5→6) taken 1 times.
|
2/2✓ Fully covered.
|
2/2✓ Decision 'true' taken 10 times.
✓ Decision 'false' taken 1 times.
|
11 | for (int i = 0; i < 10; i++) { |
368 | } | ||||
369 | } | ||||
370 | 2 | } | |||
371 | |||||
372 | 1 | int main(int argc, char *argv[]) | |||
373 | { | ||||
374 | 1 | checkBiggerTrue(6); | |||
375 | 1 | checkBiggerFalse(4); | |||
376 | 1 | checkBiggerBoth(6); | |||
377 | 1 | checkBiggerBoth(4); | |||
378 | |||||
379 | 1 | checkSmallerTrue(4); | |||
380 | 1 | checkSmallerFalse(6); | |||
381 | |||||
382 | 1 | checkEqualTrue(5); | |||
383 | 1 | checkEqualFalse(2); | |||
384 | |||||
385 | 1 | checkNotEqualTrue(2); | |||
386 | 1 | checkNotEqualFalse(5); | |||
387 | |||||
388 | 1 | checkComplexTrue(8); | |||
389 | 1 | checkComplexFalse(2); | |||
390 | |||||
391 | 1 | checkElseIf1(5); | |||
392 | 1 | checkElseIf2(10); | |||
393 | 1 | checkElseIf3(0); | |||
394 | |||||
395 | 1 | checkSwitch1(5); | |||
396 | 1 | checkSwitch2(10); | |||
397 | 1 | checkSwitch3(0); | |||
398 | |||||
399 | #if (defined __GNUC__ && (__GNUC__ >= 6)) || (defined __clang_major__) | ||||
400 |
2/4✓ Branch 0 (20→21) taken 1 times.
✗ Branch 1 (20→44) not taken.
✓ Branch 2 (21→22) taken 1 times.
✗ Branch 3 (21→42) not taken.
|
1 | SwitchTestIssue783().checkSwitch(); | ||
401 | #endif | ||||
402 | |||||
403 | 1 | checkCompactBranch1True(6); | |||
404 | 1 | checkCompactBranch1False(4); | |||
405 | |||||
406 | 1 | checkCompactBranch2True(6); | |||
407 | 1 | checkCompactBranch2False(4); | |||
408 | |||||
409 | 1 | checkTernary1True(6); | |||
410 | 1 | checkTernary1False(4); | |||
411 | |||||
412 | 1 | checkTernary2True(6); | |||
413 | 1 | checkTernary2False(4); | |||
414 | |||||
415 | 1 | checkSplittedTrue(6); | |||
416 | 1 | checkSplittedFalse(4); | |||
417 | |||||
418 | 1 | checkForLoop(5); | |||
419 | 1 | checkComplexForLoop(5); | |||
420 | 1 | checkWhileLoop(5); | |||
421 | 1 | checkDoWhileLoop(5); | |||
422 | |||||
423 | 1 | checkInterpreter(2); | |||
424 | |||||
425 | 1 | verify_issue_679(false); | |||
426 | 1 | verify_issue_679(true); | |||
427 | |||||
428 | 1 | return 0; | |||
429 | } | ||||
430 |