Reading database from /home/pjcj/g/perl/dev/Devel-Cover-0.3209/cover_db
------------------------------------------ ------ ------ ------ ------ ------
File stmt branch cond sub total
------------------------------------------ ------ ------ ------ ------ ------
tests/cond_branch 83.80 79.35 19.12 100.00 69.88
Total 83.80 79.35 19.12 100.00 69.88
------------------------------------------ ------ ------ ------ ------ ------
tests/cond_branch
line err stmt branch cond sub code
1 #!/usr/bin/perl
2
3 # Copyright 2002-2004, 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 (1, 0)
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 33 if ($y)
*** 50 66
100
52 {
53 *** 0 $x[13]++;
54 }
55 elsif ($y && $z)
56 {
57 *** 0 $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 1 for my $y (0, 1)
2
73 {
74 2 100 $y || next;
75 1 $x[18]++;
76 }
77
78 1 for my $y (1, 0)
2
79 {
80 2 100 $y || next;
81 1 $x[19]++;
82 }
83
84 1 for my $y (0, 1)
2
85 {
86 2 100 $y && next;
87 1 $x[20]++;
88 }
89
90 1 for my $y (1, 0)
2
91 {
92 2 100 $y && next;
93 1 $x[21]++;
94 }
95
96 1 for my $y (0, 1)
2
97 {
98 no warnings "void";
99 *** 2 0 my $w = $y xor next;
100 *** 0 $x[22]++;
101 }
102
103 1 for my $y (1, 0)
2
104 {
105 no warnings "void";
106 *** 2 0 my $w = $y xor next;
107 *** 0 $x[23]++;
108 }
109
110 1 for my $y (0, 1)
*** 0
111 {
112 *** 1 50 $y || last;
113 *** 0 $x[24]++;
114 }
115
116 1 for my $y (1, 0)
1
117 {
118 2 100 $y || last;
119 1 $x[25]++;
120 }
121
122 1 for my $y (0, 1)
1
123 {
124 2 100 $y && last;
125 1 $x[26]++;
126 }
127
128 1 for my $y (1, 0)
*** 0
129 {
130 *** 1 50 $y && last;
131 *** 0 $x[27]++;
132 }
133
134 1 for my $y (0, 1)
*** 0
135 {
136 no warnings "void";
137 *** 1 0 my $w = $y xor last;
138 *** 0 $x[28]++;
139 }
140
141 1 for my $y (1, 0)
*** 0
142 {
143 no warnings "void";
144 *** 1 0 my $w = $y xor last;
145 *** 0 $x[29]++;
146 }
147
148 1 for my $y (0, 1)
*** 0
149 {
150 *** 1 50 $y || goto G1;
151 *** 0 $x[30]++;
152 }
153 G1:
154
155 1 for my $y (1, 0)
1
156 {
157 2 100 $y || goto G2;
158 1 $x[31]++;
159 }
160 G2:
161
162 1 for my $y (0, 1)
1
163 {
164 2 100 $y && goto G3;
165 1 $x[32]++;
166 }
167 G3:
168
169 1 for my $y (1, 0)
*** 0
170 {
171 *** 1 50 $y && goto G4;
172 *** 0 $x[33]++;
173 }
174 G4:
175
176 1 for my $y (0, 1)
*** 0
177 {
178 no warnings "void";
179 *** 1 0 my $w = $y xor goto G5;
180 *** 0 $x[34]++;
181 }
182 G5:
183
184 1 for my $y (1, 0)
*** 0
185 {
186 no warnings "void";
187 *** 1 0 my $w = $y xor goto G6;
188 *** 0 $x[35]++;
189 }
190 G6:
191
192 1 my $z;
193
194 1 $z = -1;
195 1 for my $y (0, 1)
1
196 {
197 3 $z++;
198 3 100 last if $z > 1;
199 2 100 $z || redo;
200 1 $x[36]++;
201 }
202
203 1 $z = -1;
204 1 for my $y (1, 0)
1
205 {
206 3 $z++;
207 3 100 last if $z > 1;
208 2 100 !$z || redo;
209 1 $x[37]++;
210 }
211
212 1 $z = -1;
213 1 for my $y (0, 1)
1
214 {
215 3 $z++;
216 3 100 last if $z > 1;
217 2 100 $z && redo;
218 1 $x[38]++;
219 }
220
221 1 $z = -1;
222 1 for my $y (1, 0)
1
223 {
224 3 $z++;
225 3 100 last if $z > 1;
226 2 100 !$z && redo;
227 1 $x[39]++;
228 }
229
230 1 $z = -1;
231 1 for my $y (0, 1)
*** 0
232 {
233 3 $z++;
234 3 100 last if $z > 1;
235 no warnings "void";
236 *** 2 0 my $w = $z xor redo;
237 *** 0 $x[40]++;
238 }
239
240 1 $z = -1;
241 1 for my $y (1, 0)
*** 0
242 {
243 3 $z++;
244 3 100 last if $z > 1;
245 no warnings "void";
246 *** 2 0 my $w = !$z xor redo;
247 *** 0 $x[41]++;
248 }
249
250 1 my $s;
251 $s = sub
252 {
253 4 100 100 shift || return;
254 2 $x[42]++;
255 1 };
256
257 1 for my $y (0, 1)
2
258 {
259 2 $s->($y)
260 }
261
262 1 for my $y (1, 0)
2
263 {
264 2 $s->($y)
265 }
266
267 $s = sub
268 {
269 4 100 100 shift && return;
270 2 $x[43]++;
271 1 };
272
273 1 for my $y (0, 1)
2
274 {
275 2 $s->($y)
276 }
277
278 1 for my $y (1, 0)
2
279 {
280 2 $s->($y)
281 }
282
283 $s = sub
284 {
285 no warnings "void";
286 *** 4 0 100 shift xor return;
287 *** 0 $x[44]++;
288 1 };
289
290 1 for my $y (0, 1)
2
291 {
292 2 $s->($y)
293 }
294
295 1 for my $y (1, 0)
2
296 {
297 2 $s->($y)
298 }
299
300 1 my ($a, $b) = (0, 1);
301
302 *** 1 50 33 if ($a && $b)
*** 50 33
*** 50 50
303 {
304 *** 0 print "path 1\n";
305 }
306 elsif (!$a && !$b)
307 {
308 *** 0 print "path 2\n";
309 }
310 elsif ($b || 0)
311 {
312 1 print "path 3\n";
313 *** 1 50 33 if (!$b || $a)
*** 50 33
314 {
315 *** 0 print "path 4\n";
316 }
317 elsif (!$a && $b)
318 {
319 1 print "path 5\n";
320 }
321 }
Branches
--------
line err % true false branch
----- --- ------ ------ ------ ------
19 *** 50 0 4 if ($y and $z) { }
27 100 2 2 if ($y or $z) { }
36 *** 50 0 4 if $y
37 *** 50 0 4 if $y
39 100 2 2 if $z
40 100 2 2 if $z
42 *** 50 4 0 unless $y
43 *** 50 4 0 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 0 4 if $y and $z
*** 50 0 4 if $y and $z
74 100 1 1 unless $y
80 100 1 1 unless $y
86 100 1 1 if $y
92 100 1 1 if $y
112 *** 50 1 0 unless $y
118 100 1 1 unless $y
124 100 1 1 if $y
130 *** 50 1 0 if $y
150 *** 50 1 0 unless $y
157 100 1 1 unless $y
164 100 1 1 if $y
171 *** 50 1 0 if $y
198 100 1 2 if $z > 1
199 100 1 1 unless $z
207 100 1 2 if $z > 1
208 100 1 1 unless not $z
216 100 1 2 if $z > 1
217 100 1 1 if $z
225 100 1 2 if $z > 1
226 100 1 1 if not $z
234 100 1 2 if $z > 1
244 100 1 2 if $z > 1
253 100 2 2 unless shift @_
269 100 2 2 if shift @_
302 *** 50 0 1 if ($a and $b) { }
*** 50 0 1 elsif (not $a and not $b) { }
*** 50 1 0 elsif ($b or 0) { }
313 *** 50 0 1 if (not $b or $a) { }
*** 50 1 0 elsif (not $a and $b) { }
Conditions
----------
and 3 conditions
line err % !l l&&!r l&&r expr
----- --- ------ ------ ------ ------ ----
19 *** 33 4 0 0 $y and $z
51 *** 33 4 0 0 $y and $z
68 *** 33 4 0 0 $y and $z
*** 33 4 0 0 $y and $z
302 *** 33 1 0 0 $a and $b
*** 33 0 1 0 not $a and not $b
313 *** 33 0 0 1 not $a and $b
or 2 conditions
line err % l !l expr
----- --- ------ ------ ------ ----
302 *** 50 1 0 $b or 0
or 3 conditions
line err % l !l&&r !l&&!r expr
----- --- ------ ------ ------ ------ ----
27 *** 66 0 2 2 $y or $z
51 *** 66 0 2 2 $y or $z
313 *** 33 0 0 1 not $b or $a
xor 4 conditions
line err % l&&r l&&!r !l&&r !l&&!r expr
----- --- ------ ------ ------ ------ ------ ----
99 *** 0 0 0 0 0 my $w = $y xor next
106 *** 0 0 0 0 0 my $w = $y xor next
137 *** 0 0 0 0 0 my $w = $y xor last
144 *** 0 0 0 0 0 my $w = $y xor last
179 *** 0 0 0 0 0 my $w = $y xor goto G5
187 *** 0 0 0 0 0 my $w = $y xor goto G6
236 *** 0 0 0 0 0 my $w = $z xor redo
246 *** 0 0 0 0 0 my $w = !$z xor redo
286 *** 0 0 0 0 0 shift @_ xor return
Covered Subroutines
-------------------
Subroutine Location
---------- ---------------------
__ANON__ tests/cond_branch:253
__ANON__ tests/cond_branch:269
__ANON__ tests/cond_branch:286