Branch Coverage

blib/lib/Math/Expression.pm
Criterion Covered Total %
branch 307 388 79.1


line true false branch
155 18 0 if (defined $$self{'PrintErrFunc'} and $$self{'PrintErrFunc'})
174 0 967 if (not defined $name) { }
177 25 942 if ($name =~ /^(.+)\[(\d+)\]$/) { }
178 2 23 if (not defined $$self{'VarHash'}{$1}) { }
1 22 elsif ($2 > $$self{'ArrayMaxIndex'}) { }
0 22 elsif ($2 > @{$$self{'VarHash'}{$1};}) { }
179 1 1 if ($2 == 0) { }
219 0 0 unless exists $$self{'VarHash'}{$name}
229 0 0 exists $$self{'VarHash'}{$name} ? :
256 44 4602 if ($GenSemiColon) { }
1479 3123 elsif ($EndInput) { }
741 2382 elsif ($expr =~ s/^(((\d+(\.\d*)?)|(\.\d+))([ed][-+]?\d+)?)//i) { }
104 2278 elsif ($expr =~ /^(['"])/ and $expr =~ s/^($1)([^$1]*)$1//) { }
44 2234 elsif ($expr =~ s/^}//) { }
1340 894 elsif ($expr =~ s"^(\+\+|--|:=|>=|<=|==|<>|!=|&&|\|\||lt\b|gt\b|le\b|ge\b|eq\b|ne\b|\*\*|[-~!./*%+,<>\?:\(\)\[\]{])"") { }
50 844 elsif ($expr =~ s/^(if|while)//) { }
166 678 elsif ($expr =~ s/^;//) { }
63 615 elsif ($expr =~ s/^([_a-zA-Z][\w]*)\(/(/) { }
614 1 elsif ($expr =~ s/^\$?([_a-z]\w*)//i) { }
265 980 499 if ($endAlready) { }
283 3 1 length $1 == 1 ? :
85 19 if $1 eq '"'
296 69 1271 if ($operlast and defined $MonOp{$1})
300 25 1315 if (defined $MonVarOp{$1})
304 1108 232 unless $1 eq ')' or $1 eq ']'
317 1 62 unless ($InFuns{$1})
327 0 0 defined $2 ? :
614 0 defined $1 ? :
335 490 4154 if (not @operators and $EndInput)
346 0 5264 if ($EndInput and @operators == 0)
347 0 0 if (@tree != 1)
348 0 0 $#tree == -1 ? :
356 1459 3315 if ($newt and $$newt{'oper'} eq 'var' || $$newt{'oper'} eq 'const')
357 1051 408 if @operators
364 185 2046 if ($newt and @operators and $operators[-1]{'oper'} eq '(' and $$newt{'oper'} eq ')')
365 0 185 if ($EndInput and $#operators != 0)
375 0 490 unless ($newt or $EndInput)
376 0 0 if ($loopb++ > 40)
384 3130 490 $newt ? :
389 2046 1574 if ($newt and @operators)
390 0 2046 unless defined $NewOpPrec
391 0 2046 unless defined $OperPrec{$operators[-1]{'oper'}}[0]
393 1887 1243 if ($newt and !@operators || @operators && $NewOpPrec > $OperPrec{$operators[-1]{'oper'}}[0])
394 803 1084 if @operators
400 34 8 if (@operators and $operators[-1]{'oper'} eq 'flow' and $newt and $$newt{'oper'} ne ';' and $$newt{'oper'} ne 'EOF' and $$newt{'oper'} ne '}')
401 34 0 if @operators
408 1699 0 if (@operators and $NewOpPrec <= $OperPrec{$operators[-1]{'oper'}}[0])
412 78 1621 if ($operators[-1]{'oper'} eq ';' and not defined $operators[-1]{'after'})
418 43 1088 if (@operators and $newt and $operators[-1]{'oper'} eq '{' and $$newt{'oper'} eq '}')
422 9 34 unless @operators and $operators[-1]{'oper'} eq 'flow'
432 205 1407 $func | $monop | $flow ? :
499 1113 unless (@tree >= ($func | $monop | $flow ? 1 : 2))
434 488 11 if $$op{'oper'} eq ';' or $$op{'oper'} eq 'EOF'
436 1 10 $expr ne '' ? :
443 960 153 unless ($monop or $func)
447 3 1110 if $$op{'oper'} eq 'EOF'
450 45 1031 if $newt and $$op{'oper'} eq '[' and $$newt{'oper'} eq ']'
453 82 1031 unless $newt
473 13 2552 unless defined $tree
475 1445 1107 if $$tree{'oper'} eq 'var' or $$tree{'oper'} eq 'const'
479 0 1107 if (defined $MatchOp{$$tree{'oper'}} or defined $MatchOpClose{$$tree{'oper'}})
484 1 23 if (defined $MonVarOp{$$tree{'oper'}} and !defined($$tree{'right'}) || $$tree{'right'}{'oper'} ne '[' && $$tree{'right'}{'oper'} ne 'var')
489 1 1106 if ($$tree{'oper'} eq '?' and $$tree{'right'}{'oper'} ne ':')
490 1 0 unless $ChkErrs
494 1046 61 if ($$tree{'oper'} ne 'func')
495 0 1046 unless (not defined $$tree{'left'} and defined $$tree{'monop'} or $self->CheckTree($$tree{'left'}))
496 0 0 defined $$tree{'monop'} ? :
0 0 unless $ChkErrs
500 0 1107 unless (&CheckTree($self, $$tree{'right'}))
501 0 0 defined $$tree{'monop'} ? :
0 0 unless $ChkErrs
505 61 1046 if ($$tree{'oper'} eq 'func')
507 0 0 if ($fname eq 'pop' || $fname eq 'shift' || $fname eq 'push' || $fname eq 'unshift' and !defined($$tree{'right'}{'oper'}) || $$tree{'right'}{'oper'} ne 'var' && $$tree{'right'}{'oper'} ne ',' && (!defined($$tree{'right'}{'left'}{'oper'}) || $$tree{'right'}{'left'}{'oper'} ne 'var'))
514 2 1105 unless $ok
515 1105 2 $ok ? :
535 0 0 unless defined $dl
538 0 0 unless (defined $nodp)
546 0 0 if ($$nodp{'oper'} eq 'var') { }
0 0 elsif ($$nodp{'oper'} eq 'const') { }
582 0 1 unless $tree
609 0 3504 unless defined $tree
613 1024 2480 if $oper eq 'const'
614 372 560 $wantlv ? :
932 1548 if $oper eq 'var'
617 61 1487 if $oper eq 'func'
620 113 1374 if ($oper eq '++' or $oper eq '--')
623 7 106 if ($$tree{'right'}{'oper'} eq '[') { }
632 0 7 unless ($index =~ /^-?\d+$/)
637 4 3 if $index < 0
639 2 5 if $index < 0 or $index > @left
649 70 41 $oper eq '++' ? :
657 68 1306 if (not defined $$tree{'left'} and defined $$tree{'monop'})
663 0 68 unless (defined $right)
664 0 0 unless ($$self{'AutoInit'})
671 0 68 unless ($right =~ /^([-+]?)0*([\d.]+)([ef][-+]?\d*|)$/i)
677 57 11 if $oper eq '-'
678 11 0 if $oper eq '+'
679 0 0 if $oper eq '!'
680 0 0 if $oper eq '~'
689 352 954 if ($oper eq ':=')
694 307 45 if $#right <= 0
699 1 50 if $i > $#right
701 43 7 if ($i == $#left and $i != $#right)
712 77 877 if ($oper eq 'flow')
713 55 22 if ($$tree{'flow'} eq 'if')
716 34 21 $left[-1] ? :
718 22 0 if ($$tree{'flow'} eq 'while')
720 0 22 unless ($$self{'PermitLoops'})
725 0 121 if ($$self{'MaxLoopCount'} and ++$$self{'LoopCount'} > $$self{'MaxLoopCount'})
731 22 99 unless $left[-1]
742 0 2 if (not defined $left and $oper ne ',' and $oper ne '.' and $oper ne ';')
743 0 0 unless ($$self{'AutoInit'})
751 5 7 $left ? :
12 865 if $oper eq '?'
755 11 854 if $oper eq ',' and $wantlv
758 10 844 if ($oper eq '&&' or $oper eq '||')
759 2 8 if $oper eq '&&' and not $left
760 2 6 if $oper eq '||' and $left
764 3 3 $right[$#right] ? :
771 116 728 if $oper eq ','
772 210 518 if $oper eq ';'
776 38 480 if ($oper eq '[')
778 0 38 unless $right =~ /^-?\d+$/
780 20 18 if $wantlv
783 11 27 if $index < 0
785 20 18 if $wantlv
789 2 16 if $index < 0 or $index > @left
798 14 466 if ($oper eq '.')
800 2 12 unless defined $left
801 0 14 unless defined $right
802 0 14 if (length($left) + length($right) > $$self{'StringMaxLength'})
809 0 466 unless (defined $right)
810 0 0 unless ($$self{'AutoInit'})
817 2 2 $left lt $right ? :
4 462 if $oper eq 'lt'
818 1 5 $left gt $right ? :
6 456 if $oper eq 'gt'
819 2 1 $left le $right ? :
3 453 if $oper eq 'le'
820 2 1 $left ge $right ? :
3 450 if $oper eq 'ge'
821 1 1 $left eq $right ? :
2 448 if $oper eq 'eq'
822 2 2 $left ne $right ? :
4 444 if $oper eq 'ne'
824 0 444 if $oper eq ':'
830 0 444 if (not $left =~ /^([-+]?)0*([\d.]+)([ef][-+]?\d*|)/i) { }
831 0 0 unless ($$self{'AutoInit'} and $left eq '')
840 1 443 if (not $right =~ /^([-+]?)0*([\d.]+)([ef][-+]?\d*|)/i) { }
841 1 0 unless ($$self{'AutoInit'} and $right eq '')
850 69 374 if $oper eq '*'
851 12 362 if $oper eq '/'
852 22 340 if $oper eq '%'
853 120 220 if $oper eq '+'
854 35 185 if $oper eq '-'
855 4 181 if $oper eq '**'
858 64 17 $left > $right ? :
81 100 if $oper eq '>'
859 40 12 $left < $right ? :
52 48 if $oper eq '<'
860 2 1 $left >= $right ? :
3 45 if $oper eq '>='
861 2 1 $left <= $right ? :
3 42 if $oper eq '<='
862 21 16 $left == $right ? :
37 5 if $oper eq '=='
863 2 1 $left != $right ? :
3 2 if $oper eq '!='
864 1 1 $left != $right ? :
2 0 if $oper eq '<>'
876 0 61 if defined $$self{'ExtraFuncEval'} and defined($res = $$self{'ExtraFuncEval'}(@_))
880 6 55 if $fname eq 'int'
881 6 49 if $fname eq 'abs'
884 4 7 $$self{'RoundNegatives'} ? :
11 38 if $fname eq 'round'
886 4 34 if $fname eq 'split'
887 3 31 if $fname eq 'join'
890 1 30 if ($fname eq 'printf')
891 0 1 unless ($$self{'EnablePrintf'})
896 1 0 if length $s <= $$self{'StringMaxLength'}
901 1 29 if $fname eq 'mktime'
902 2 27 if $fname eq 'strftime'
903 2 25 if $fname eq 'localtime'
905 2 23 if $fname eq 'defined'
907 7 16 if ($fname eq 'pop' or $fname eq 'shift')
909 6 1 $fname eq 'pop' ? :
915 4 12 if ($fname eq 'push' or $fname eq 'unshift')
922 1 3 $fname eq 'push' ? :
928 1 11 if $fname eq 'strlen'
929 7 4 if $fname eq 'count'
932 4 0 if ($fname eq 'aindex')
935 3 22 if $val eq $arglist[$inx]
984 0 8 unless exists $$self{$_[0]}
985 0 8 unless defined $_[1]