Line | Branch | 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 taken 1 times.
✗ Branch 1 not taken.
|
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 not taken.
✓ Branch 1 taken 1 times.
|
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 taken 1 times.
✓ Branch 1 taken 1 times.
|
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 taken 1 times.
✗ Branch 1 not taken.
|
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 not taken.
✓ Branch 1 taken 1 times.
|
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 taken 1 times.
✗ Branch 1 not taken.
|
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 not taken.
✓ Branch 1 taken 1 times.
|
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 taken 1 times.
✗ Branch 1 not taken.
|
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 not taken.
✓ Branch 1 taken 1 times.
|
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 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
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 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
|
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 taken 1 times.
✗ Branch 1 not taken.
|
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 not taken.
✓ Branch 1 taken 1 times.
|
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 taken 1 times.
✗ Branch 1 not taken.
|
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 not taken.
✓ Branch 1 taken 1 times.
|
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 not taken.
✓ Branch 1 taken 1 times.
|
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 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 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 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 2 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 not taken.
✗ Branch 1 not taken.
✓ Branch 2 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 taken 1 times.
✗ Branch 1 not taken.
|
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 not taken.
✓ Branch 1 taken 1 times.
|
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 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
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 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
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 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
1 | return (a > 5 && a < 10) ? true : false; | |
274 | } | |||
275 | ||||
276 | 1 | bool checkTernary2False(int a) | ||
277 | { | |||
278 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
1 | return (a > 5 && a < 10) ? true : false; | |
279 | } | |||
280 | ||||
281 | 1 | int checkForLoop(int a) | ||
282 | { | |||
283 | 1 | int temp = 0; | ||
284 |
2/2✓ Branch 0 taken 5 times.
✓ Branch 1 taken 1 times.
|
2/2✓ Decision 'true' taken 5 times.
✓ Decision 'false' taken 1 times.
|
6 | for (int i = 0; i < a; i++) |
285 | { | |||
286 | 5 | temp += a; | ||
287 | } | |||
288 | 1 | return temp; | ||
289 | } | |||
290 | ||||
291 | 1 | int checkComplexForLoop(int a) | ||
292 | { | |||
293 | 1 | int temp = 0; | ||
294 |
3/4✓ Branch 0 taken 5 times.
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
|
0/1? Decision couldn't be analyzed.
|
6 | for (int i = 0; i < a && a < 6; i++) |
295 | { | |||
296 | 5 | temp += a; | ||
297 | } | |||
298 | 1 | return temp; | ||
299 | } | |||
300 | ||||
301 | 1 | int checkWhileLoop(int a) | ||
302 | { | |||
303 | 1 | int temp = 0; | ||
304 | 1 | int counter = 0; | ||
305 | ||||
306 |
2/2✓ Branch 0 taken 5 times.
✓ Branch 1 taken 1 times.
|
2/2✓ Decision 'true' taken 5 times.
✓ Decision 'false' taken 1 times.
|
6 | while (counter < a) |
307 | { | |||
308 | 5 | counter++; | ||
309 | 5 | temp += a; | ||
310 | } | |||
311 | ||||
312 | 1 | return temp; | ||
313 | } | |||
314 | ||||
315 | 1 | int checkDoWhileLoop(int a) | ||
316 | { | |||
317 | 1 | int temp = 0; | ||
318 | 1 | int counter = 0; | ||
319 | ||||
320 | do | |||
321 | { | |||
322 | 5 | counter++; | ||
323 | 5 | temp += a; | ||
324 |
2/2✓ Branch 0 taken 4 times.
✓ Branch 1 taken 1 times.
|
2/2✓ Decision 'true' taken 4 times.
✓ Decision 'false' taken 1 times.
|
5 | } while (counter < a); |
325 | ||||
326 | 1 | return temp; | ||
327 | } | |||
328 | ||||
329 | 1 | bool checkInterpreter(int a) | ||
330 | { | |||
331 | 1 | char test1[] = " while "; | ||
332 | 1 | a++; | ||
333 | ||||
334 | 1 | char test2[] = " for "; | ||
335 | { | |||
336 | 1 | a++; | ||
337 | } | |||
338 | ||||
339 | 1 | char test3[] = " if("; | ||
340 | 1 | a++; | ||
341 | ||||
342 | 1 | char test4[] = " do "; | ||
343 | 1 | a++; | ||
344 | ||||
345 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1/2✓ Decision 'true' taken 1 times.
✗ Decision 'false' not taken.
|
1 | if (a > 5) |
346 | { | |||
347 | 1 | return true; | ||
348 | } | |||
349 | ||||
350 | ✗ | return false; | ||
351 | } | |||
352 | ||||
353 | 2 | void verify_issue_679(const bool b) { | ||
354 |
2/2✓ Branch 0 taken 1 times.
✓ Branch 1 taken 1 times.
|
2/2✓ Decision 'true' taken 1 times.
✓ Decision 'false' taken 1 times.
|
2 | if (b) { |
355 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 times.
|
2/2✓ Decision 'true' taken 10 times.
✓ Decision 'false' taken 1 times.
|
11 | for (int i = 0; i < 10; i++) { |
356 | } | |||
357 | } | |||
358 | 2 | } | ||
359 | ||||
360 | 1 | int main(int argc, char *argv[]) | ||
361 | { | |||
362 | 1 | checkBiggerTrue(6); | ||
363 | 1 | checkBiggerFalse(4); | ||
364 | 1 | checkBiggerBoth(6); | ||
365 | 1 | checkBiggerBoth(4); | ||
366 | ||||
367 | 1 | checkSmallerTrue(4); | ||
368 | 1 | checkSmallerFalse(6); | ||
369 | ||||
370 | 1 | checkEqualTrue(5); | ||
371 | 1 | checkEqualFalse(2); | ||
372 | ||||
373 | 1 | checkNotEqualTrue(2); | ||
374 | 1 | checkNotEqualFalse(5); | ||
375 | ||||
376 | 1 | checkComplexTrue(8); | ||
377 | 1 | checkComplexFalse(2); | ||
378 | ||||
379 | 1 | checkElseIf1(5); | ||
380 | 1 | checkElseIf2(10); | ||
381 | 1 | checkElseIf3(0); | ||
382 | ||||
383 | 1 | checkSwitch1(5); | ||
384 | 1 | checkSwitch2(10); | ||
385 | 1 | checkSwitch3(0); | ||
386 | ||||
387 | #if (defined __GNUC__ && (__GNUC__ >= 6)) || (defined __clang_major__) | |||
388 |
2/4✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
1 | SwitchTestIssue783{}.checkSwitch(); | |
389 | #endif | |||
390 | ||||
391 | 1 | checkCompactBranch1True(6); | ||
392 | 1 | checkCompactBranch1False(4); | ||
393 | ||||
394 | 1 | checkCompactBranch2True(6); | ||
395 | 1 | checkCompactBranch2False(4); | ||
396 | ||||
397 | 1 | checkTernary1True(6); | ||
398 | 1 | checkTernary1False(4); | ||
399 | ||||
400 | 1 | checkTernary2True(6); | ||
401 | 1 | checkTernary2False(4); | ||
402 | ||||
403 | 1 | checkForLoop(5); | ||
404 | 1 | checkComplexForLoop(5); | ||
405 | 1 | checkWhileLoop(5); | ||
406 | 1 | checkDoWhileLoop(5); | ||
407 | ||||
408 | 1 | checkInterpreter(2); | ||
409 | ||||
410 | 1 | verify_issue_679(false); | ||
411 | 1 | verify_issue_679(true); | ||
412 | ||||
413 | 1 | return 0; | ||
414 | } | |||
415 |