Reading database from cover_db
------------------------------------------------- ------ ------ ------ ------
File stmt branch cond total
------------------------------------------------- ------ ------ ------ ------
tests/cond_branch 89.29 70.59 44.44 71.25
Total 89.29 70.59 44.44 71.25
------------------------------------------------- ------ ------ ------ ------
tests/cond_branch
line err stmt branch cond code
1 #!/usr/local/bin/perl
2
3 # Copyright 2002, Paul Johnson (pjcj@cpan.org)
4
5 # This software is free. It is licensed under the same terms as Perl itself.
6
7 # The latest version of this software should be available from my homepage:
8 # http://www.pjcj.net
9
10 use strict;
11 use warnings;
12
13 1 my @x;
14
15 1 for my $y (0, 0)
2
16 {
17 2 for my $z (0, 1)
4
18 {
19 *** 4 50 33 if ($y && $z)
20 {
21 *** 0 $x[1]++;
22 }
23 else
24 {
25 4 $x[2]++;
26 }
27 *** 4 100 66 if ($y || $z)
28 {
29 2 $x[3]++;
30 }
31 else
32 {
33 2 $x[4]++;
34 }
35
36 *** 4 50 $y && $x[5]++;
37 *** 4 50 $x[5]++ if $y;
38
39 4 100 $z && $x[6]++;
40 4 100 $x[6]++ if $z;
41
42 *** 4 50 $y || $x[7]++;
43 *** 4 50 $x[7]++ unless $y;
44
45 4 100 $z || $x[8]++;
46 4 100 $x[8]++ unless $z;
47
48 *** 4 50 $y ? $x[9]++ : $x[10]++;
49 4 100 $z ? $x[11]++ : $x[12]++;
50
51 *** 4 50 if ($y)
*** 50
100
52 {
53 *** 0 33 $x[13]++;
54 }
55 elsif ($y && $z)
56 {
57 *** 0 66 $x[14]++;
58 }
59 elsif ($y || $z)
60 {
61 2 $x[15]++;
62 }
63 else
64 {
65 2 $x[16]++;
66 }
67
68 *** 4 50 33 $y && $z && $x[17]++; $y && $z && $x[18]++;
*** 4 50 33
69 }
70 }
71
72 # print join(", ", @x), "\n";
Branches
--------
line err % true false branch
----- --- ------ ------ ------ ------
19 *** 50 0 4 if ($y and $z) { }
27 100 2 2 if ($y or $z) { }
36 *** 50 4 0 if $y
37 *** 50 4 0 if $y
39 100 2 2 if $z
40 100 2 2 if $z
42 *** 50 0 4 unless $y
43 *** 50 0 4 unless $y
45 100 2 2 unless $z
46 100 2 2 unless $z
48 *** 50 0 4 $y ? :
49 100 2 2 $z ? :
51 *** 50 0 4 if ($y) { }
*** 50 0 4 elsif ($y and $z) { }
100 2 2 elsif ($y or $z) { }
68 *** 50 4 0 if $y and $z
*** 50 4 0 if $y and $z
Conditions
----------
and 3 conditions
line err % !l l&&!r l&&r expr
----- --- ------ ------ ------ ------ ----
19 *** 33 4 0 0 $y and $z
53 *** 33 4 0 0 $y and $z
68 *** 33 4 0 0 $y and $z
*** 33 4 0 0 $y and $z
or 3 conditions
line err % l !l&&r !l&&!r expr
----- --- ------ ------ ------ ------ ----
27 *** 66 0 2 2 $y or $z
57 *** 66 0 2 2 $y or $z