GCC Code Coverage Report


Directory: ./
File: main.cpp
Date: 0000-00-00 00:00:00
Warnings: 3 unchecked decisions!
Exec Total Coverage
Lines: 172 197 87.3%
Functions: 32 32 100.0%
Branches: 46 85 54.1%
Decisions: 33 65 50.8%

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 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 5 }
288 1 return temp;
289 }
290
291 1 int checkComplexForLoop(int a)
292 {
293 1 int temp = 0;
294
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++)
295 {
296 5 temp += a;
297 5 }
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 1 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 1 }
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 10 }
357 1 }
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
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 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