GCC Code Coverage Report


Directory: ./
File: main.cpp
Date: 0000-00-00 00:00:00
Warnings: 3 unchecked decisions!
Exec Total Coverage
Lines: 181 207 87.4%
Functions: 34 34 100.0%
Branches: 49 93 52.7%
Decisions: 35 69 50.7%

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 1 }
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 1 }
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 2 }
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 1 }
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 1 }
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 1 }
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 1 }
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 1 }
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 1 }
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 1 }
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 1 }
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 1 }
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 1 }
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 1 }
187
188 1 bool checkSwitch1(int a)
189 {
190
1/3
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
1 switch (a)
191 {
192
1/1
✓ Decision 'true' taken 1 times.
1 case 5: return true; break;
193 /* Comment */
194 case 10:
195 /* Comment */
196
0/1
✗ Decision 'true' not taken.
return true;
197 /* Comment */
198 break;
199 /* Comment */
200 default:
201 /* Comment */
202
0/1
✗ Decision 'true' not taken.
return false;
203 /* Comment */
204 break;
205 /* Comment */
206 }
207 1 }
208
209 1 bool checkSwitch2(int a)
210 {
211
1/3
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
1 switch (a)
212 {
213 case 5:
214
0/1
✗ Decision 'true' not taken.
return true;
215 break;
216 case 10:
217
1/1
✓ Decision 'true' taken 1 times.
1 return true;
218 break;
219 default:
220
0/1
✗ Decision 'true' not taken.
return false;
221 break;
222 }
223 1 }
224
225 1 bool checkSwitch3(int a)
226 {
227
1/3
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 switch (a)
228 {
229 case 5:
230
0/1
✗ Decision 'true' not taken.
return true;
231 break;
232 case 10:
233
0/1
✗ Decision 'true' not taken.
return true;
234 break;
235 default:
236
1/1
✓ Decision 'true' taken 1 times.
1 return false;
237 break;
238 }
239 1 }
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 1 }
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 1 }
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 1 }
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 1 }
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
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 return (a > 5 && a < 10) ? true : false;
274 }
275
276 1 bool checkTernary2False(int a)
277 {
278
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 return (a > 5 && a < 10) ? true : false;
279 }
280
281 1 bool checkSplittedTrue(int a)
282 {
283
2/4
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1/2
✗ Decision 'true' not taken.
✓ Decision 'false' taken 1 times.
1 if (a > 5) if (a < 10) return true;
284 return false;
285 1 }
286
287 1 bool checkSplittedFalse(int a)
288 {
289
1/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
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 1 }
292
293 1 int checkForLoop(int a)
294 {
295 1 int temp = 0;
296
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++)
297 {
298 5 temp += a;
299 5 }
300 1 return temp;
301 }
302
303 1 int checkComplexForLoop(int a)
304 {
305 1 int temp = 0;
306
4/4
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 5 times.
✓ Branch 3 taken 1 times.
0/1
? Decision couldn't be analyzed.
6 for (int i = 0; i < a && a < 6; i++)
307 {
308 5 temp += a;
309 5 }
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 taken 5 times.
✓ Branch 1 taken 1 times.
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 1 do
333 {
334 5 counter++;
335 5 temp += a;
336
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);
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 taken 1 times.
✗ Branch 1 not taken.
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 1 }
364
365 2 void verify_issue_679(const bool b) {
366
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) {
367
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++) {
368 10 }
369 1 }
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
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 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