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