Branch Coverage

blib/lib/Math/Logic/Predicate.pm
Criterion Covered Total %
branch 113 170 66.4


line true false branch
32 0 11 unless $$self{'parser'} ||= 'Parse::RecDescent'->new($GRAMMAR)
35 3 8 if ($auto) { }
41 11 0 if ($ret)
42 0 11 wantarray ? :
52 0 72 unless (grep {$context == $_;} 'true', 'false', 'and', 'or', 'sub', 'bind')
64 66 6 unless ($context eq 'true' or $context eq 'false' or $context eq 'bind')
65 0 66 if $next
74 10 3 if (ref $proc) { }
76 0 10 unless $proc
77 0 10 if $$proc{'rule'} eq '^QUERY'
78 0 10 if $$self{'nonterm'}($$proc{'rule'})
80 10 0 if (@{$$proc{'args'};}) { }
81 6 4 unless $$self{'pred'}{$$proc{'rule'}}
84 0 0 unless $$self{'pred'}{$$proc{'rule'}}
99 2 0 unless ref $proc
109 15 10 if (local $_ = $$proc{'args'}[$argn]) { }
110 3 12 $$self{'nonterm'}($_) ? :
111 15 0 unless ($$href{$r})
112 10 5 if ($argn == $#{$$proc{'args'};}) { }
124 8 2 if ($$proc{'context'} eq 'true' or $$proc{'context'} eq 'false')
126 0 8 if grep {$$_{'context'} eq $$proc{'context'};} @$href
129 2 8 if ($$proc{'context'} eq 'bind')
132 0 2 if ($$cptr{'rule'} eq $$proc{'rule'})
149 0 17 if $$self{'nonterm'}($rule)
151 0 17 if $$lse{'fail'}
152 0 17 unless $rule and $$self{'pred'}{$rule}
166 29 18 unless ($$lse{'pos'} == @{$$proc{'args'};})
168 13 16 unless $$pred[0]{'^SORT'}
172 5 42 exists $$pad{$p} ? :
174 18 29 if ($$lse{'pos'} == @{$$proc{'args'};}) { }
175 8 10 if $$iter[0] == @{$$pred[0];}
178 9 20 if ($$self{'nonterm'}($p)) { }
179 2 7 if $$iter[0] == @{$$pred[0]{'^SORT'};}
183 9 11 if $$iter[0] >= $len
187 19 28 if ($state eq 'pop') { }
191 2 17 if $free
195 7 12 unless (@$iter)
203 10 18 if (not defined $p) { }
7 11 elsif ($$self{'nonterm'}($p)) { }
204 3 7 if ($delete) { }
215 3 4 if (not $p eq '_' || $ind eq '_' || exists $$pad{$p}) { }
225 0 11 if ($pi) { }
229 10 1 exists $$pred[0]{$p} ? :
243 0 16 unless @{$$srule{'args'};} == @{$$drule{'args'};}
247 12 10 if ($$self{'nonterm'}($$drule{'args'}[$i]))
249 6 6 if $$self{'nonterm'}($bind)
250 4 5 if (defined $bind and $$drule{'args'}[$i] ne '_' and not exists $$dcon{'pad'}{$$drule{'args'}[$i]})
254 3 1 if $bindtrack
268 1 16 unless ref $proc
276 5 12 if $$proc{'context'} eq 'true'
277 0 12 if $$proc{'context'} eq 'false'
279 2 10 if ($$proc{'context'} eq 'bind' and $$proc{'code'})
286 1 1 unless ($$proc{'bindcode'})
314 0 1 if $@
318 2 0 $res ? :
321 3 7 if ($$state{'stack'}[0]{'ptr'}) { }
322 0 3 if $DEBUG
337 0 0 if $$cptr{'context'} eq 'or' and $$state{'stack'}[0]{'skip'} and not $dir
340 0 0 if $$cptr{'context'} eq 'sub' and not $dir and not $$state{'stack'}[0]{'last'}
342 0 13 if $$cptr{'context'} eq 'sub' and not $res
345 0 0 if $$cptr{'context'} eq 'or' and $res and $dir and $$state{'stack'}[0]{'skip'} = 1
351 0 13 if ($$cptr{'context'} eq 'true')
357 0 13 if ($$cptr{'context'} eq 'false')
365 12 1 unless ($frame)
367 0 12 if $DEBUG
371 5 7 unless ($try)
372 0 5 if $DEBUG
376 0 7 if $DEBUG
379 2 5 if ($$try{'context'} eq 'bind')
389 0 8 if $DEBUG
392 0 8 unless ($res = !!$self->match($try, $frame, "$indent "))
393 0 0 if $DEBUG
399 8 0 if $res
405 0 8 if $DEBUG
409 0 13 if ($$cptr{'context'} eq 'sub') { }
410 0 0 if ($dir)
411 0 0 if ($res and $$state{'stack'}[1]{'last'}) { }
0 0 elsif (not $$state{'stack'}[1]{'last'}) { }
416 0 0 if ($$cptr{'next'} and $$cptr{'next'}{'context'} eq 'or' || $$cptr{'next'}{'context'} eq 'sub')
419 0 0 unless $$state{'stack'}[0]{'fail'} > 1
429 0 2 if ($$cptr{'next'} and $$cptr{'next'}{'context'} eq 'or' || $$cptr{'next'}{'context'} eq 'sub')
432 0 0 unless $$state{'stack'}[0]{'fail'} > 1
437 8 5 if ($dir) { }
458 6 4 $res ? :
463 4 0 if (exists $$iter{'pad'}{$sym}) { }