Branch Coverage

blib/lib/Math/Formula/Type.pm
Criterion Covered Total %
branch 285 362 78.7


line true false branch
43 5 6 if $to eq "MF::STRING"
77 35 1 if ($right->isa("MF::NAME"))
79 33 2 if ($op eq '.') { }
80 33 0 if (my $attr = $self->attribute($token))
81 33 0 ref $attr eq 'CODE' ? :
85 0 2 unless defined $context->formula($token)
94 1 0 if $op eq "~"
112 64 53 $value ? :
117 52 unless defined $token
118 6 0 if ($op eq "not")
128 19 7 $right->isa('MF::BOOLEAN') ? :
23 3 if (my $r = $right->isa('MF::BOOLEAN') ? $right : $right->cast('MF::BOOLEAN', $context)) { }
3 0 elsif ($op eq '->') { }
130 6 0 $op eq 'xor' ? :
7 6 $op eq 'or' ? :
10 13 $op eq 'and' ? :
136 23 0 if defined $v
139 0 3 unless $self->value
148 51 47 $_[1] ? :
163 3 188 if ref $token eq "SCALAR"
172 5 0 substr($token, 0, 1) eq q['] ? :
101 5 if (substr($token, 0, 1) eq '"') { }
180 11 3 ref $self eq __PACKAGE__ && $to eq 'MF::PATTERN' ? :
14 14 if (ref $self eq __PACKAGE__ and $to eq 'MF::REGEXP') { }
189 6 54 if ($op eq '~') { }
9 45 elsif ($op eq '=~') { }
4 41 elsif ($op eq '!~') { }
12 29 elsif ($op eq 'like' or $op eq 'unlike') { }
21 8 elsif ($op eq 'cmp') { }
190 5 1 $right->isa('MF::STRING') ? :
191 6 0 if $r
194 0 9 $right->isa('MF::REGEXP') ? :
9 0 if (my $r = $right->isa("MF::REGEXP") ? $right : $right->cast("MF::REGEXP", $context))
195 7 2 if (my(@captures) = $self->value =~ $r->regexp)
203 0 4 $right->isa('MF::REGEXP') ? :
204 4 0 if $r
208 2 10 $right->isa('MF::PATTERN') || $right->isa('MF::REGEXP') ? :
209 6 6 $op eq 'like' ? :
0 12 !$r ? :
213 12 0 if $r
216 21 0 $right->isa('MF::STRING') ? :
229 0 8 unless $string_attrs{$_[1]}
241 4 8 $_[0]->value == 0 ? :
1 3 $to eq 'MF::FLOAT' ? :
12 4 if ($to eq 'MF::BOOLEAN') { }
248 5 0 $op eq '-' ? :
4 5 if ($op eq '+') { }
257 3 56 if $op eq "and" or $op eq "or" or $op eq "xor"
260 1 55 if $right->isa("MF::TIMEZONE")
263 49 7 if ($right->isa("MF::INTEGER") or $right->isa("MF::FLOAT"))
264 2 25 $op eq '%' ? :
6 27 $op eq '*' ? :
4 33 $op eq '-' ? :
12 37 $op eq '+' ? :
270 24 25 if defined $v
272 24 1 if $op eq "<=>"
275 1 0 if $op eq "/"
279 2 5 if $op eq "*" and $right->isa("MF::DURATION")
297 0 126 unless my($v, $m) = $_[1] =~ /^ ( [0-9]+ (?: _[0-9][0-9][0-9] )* ) ($multipliers)? $/ux
300 3 123 $2 ? :
306 0 2 unless $int_attrs{$_[1]}
318 4 20 $t =~ /[e.]/u ? :
322 1 1 $to eq 'MF::INTEGER' ? :
328 5 0 $op eq '-' ? :
4 5 if ($op eq '+') { }
337 0 17 if $op eq "and" or $op eq "or" or $op eq "xor"
340 1 16 if $right->isa("MF::TIMEZONE")
343 17 0 if ($right->isa("MF::FLOAT") or $right->isa("MF::INTEGER"))
345 2 6 $op eq '/' ? :
2 8 $op eq '%' ? :
3 10 $op eq '*' ? :
2 13 $op eq '-' ? :
2 15 $op eq '+' ? :
352 11 6 if defined $v
354 6 0 if $op eq "<=>"
383 0 37 unless $token =~ /^
402 1 0 $to eq 'MF::DATE' ? :
1 1 if ($to eq 'MF::TIME') { }
411 3 18 if ($op eq "+" or $op eq "-")
413 2 1 if ($right->isa("MF::DURATION"))
414 1 1 $op eq '+' ? :
417 1 0 if ($op eq "-")
418 1 0 $right->isa('MF::DATETIME') ? :
423 8 10 if ($op eq "<=>")
424 5 3 if $right->isa("MF::DATETIME")
427 3 0 if ($right->isa("MF::DATE"))
430 0 3 $date =~ /\+/u ? :
431 1 2 if "DateTime"->compare($begin, $self->value) > 0
433 0 2 $date =~ /\+/u ? :
434 1 1 'DateTime'->compare($self->value, $end) > 0 ? :
451 0 10 unless $dt_attrs{$_[1]} or $MF::DATE::date_attrs{$_[1]}
472 0 11 unless $token =~ /^
486 2 1 if ($to eq "MF::INTEGER")
493 1 0 if ($to eq "MF::DATETIME")
495 1 0 $t =~ /\+/u ? :
506 1 11 if ($op eq "+" and $right->isa("MF::TIME"))
516 1 10 if ($op eq "-" and $right->isa("MF::DATE"))
520 2 8 if ($op eq "+" or $op eq "-")
521 2 0 $right->isa('MF::DURATION') ? :
522 0 2 if $r and $r->token =~ /T.*[1-9]/u
526 1 1 $op eq '+' ? :
530 4 4 if ($op eq "<=>")
531 4 0 $right->isa('MF::DATE') ? :
536 1 3 unless $ld ne $rd or ($ltz // "") eq ($rtz // "")
551 0 4 unless $date_attrs{$_[1]}
566 2 5 $ns ? :
572 0 23 unless $token =~ /^ ([01][0-9]|2[0-3]) \: ([0-5][0-9]) \: ([0-5][0-9]) (?:(\.[0-9]+))? $/ux
585 0 10 unless $time_attrs{$_[1]}
589 1 7 if ($ns < 0) { }
0 7 elsif ($ns > 1000000000) { }
602 8 5 if ($op eq "+" or $op eq "-")
607 3 5 $right->isa('MF::TIME') ? :
5 3 if (my $r = $right->isa("MF::TIME") ? $right : $right->cast("MF::TIME", $context))
611 2 3 $diff->{'nanosecond'} ? :
616 3 0 $right->isa('MF::DURATION') ? :
3 0 if (my $r = $right->isa("MF::DURATION") ? $right : $right->cast("MF::DURATION", $context))
621 2 1 $op eq '+' ? :
622 2 1 $op eq '+' ? :
642 2 2 if $count < 0
652 0 12 unless $token =~ /^ ([+-]) (0[0-9]|1[012]) ([0-5][0-9]) $/ux
655 3 9 $1 eq '-' ? :
660 5 1 if ($to->isa("MF::INTEGER") or $to->isa("MF::FLOAT"))
674 0 2 unless $tz_attrs{$_[1]}
678 1 0 $op eq '-' ? :
1 1 if ($op eq '+') { }
687 3 2 if ($op eq "+" or $op eq "-")
688 3 0 $right->isa('MF::DURATION') ? :
3 0 if (my $d = $right->isa("MF::DURATION") ? $right : $right->cast("MF::DURATION"))
689 2 1 $op eq '-' ? :
714 3 10 $_[1]->is_negative ? :
720 2 38 $negative ? :
725 1 0 $op eq '-' ? :
1 1 if ($op eq '+') { }
734 4 12 if ($op eq '+' or $op eq '-') { }
4 8 elsif ($op eq '*') { }
6 2 elsif ($op eq '<=>') { }
735 4 0 $right->isa('MF::DURATION') ? :
737 2 2 $op eq '+' ? :
0 4 !$r ? :
738 4 0 if $r
741 4 0 $right->isa('MF::INTEGER') ? :
742 4 0 if $r
745 6 0 $right->isa('MF::DURATION') ? :
746 6 0 if $r
763 0 2 unless $dur_attrs{$_[1]}
783 0 0 unless $name =~ qr/^$pattern$/ou
792 0 2 if ($type->isa("MF::FRAGMENT"))
793 0 0 $self->token eq '' ? :
794 0 0 if $frag
803 4 0 if $op eq "exists"
814 4 18 if ($op eq ".")
815 1 3 $name eq '' ? :
816 4 0 if $left
819 7 11 if ($op eq "#")
820 7 0 $name eq '' ? :
821 7 0 if $left
824 5 6 if ($op eq "//")
825 1 4 defined $context->formula($name) ? :
829 6 0 $left ? :
858 2 104 if (length $char == 2)
859 6 57 $in_range ? :
63 41 if (not $char =~ /^[\[\]*?{},!]$/u) { }
12 29 elsif ($char eq '*') { }
1 28 elsif ($char eq '?') { }
3 25 elsif ($char eq '[') { }
3 22 elsif ($char eq ']') { }
2 20 elsif ($char eq '!') { }
5 15 elsif ($char eq '{') { }
5 10 elsif ($char eq '}') { }
10 0 elsif ($char eq ',') { }
864 1 1 $in_range && $regexp[-1] eq '[' ? :
865 1 4 $in_range ? :
4 1 unless $in_range
866 1 4 $in_range ? :
4 1 unless $in_range
867 8 2 $in_alts ? :
891 2 15 if defined $self->[2]
912 7 8 if ($op eq "#" and $right->isa("MF::NAME"))
913 0 7 unless my $fragment = $self->context->fragment($name)
919 8 0 if ($op eq "." and $right->isa("MF::NAME"))
921 8 0 if $result