Branch Coverage

blib/lib/Math/Formula/Type.pm
Criterion Covered Total %
branch 282 358 78.7


line true false branch
30 5 6 if $to eq "MF::STRING"
67 33 1 if ($op eq "." and $right->isa("MF::NAME"))
68 33 0 if (my $attr = $self->attribute($right->token))
69 33 0 ref $attr eq 'CODE' ? :
74 1 0 if $op eq "~"
92 63 52 $value ? :
115 50 unless defined $token
98 6 0 if ($op eq "not")
108 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 '->') { }
110 6 0 $op eq 'xor' ? :
7 6 $op eq 'or' ? :
10 13 $op eq 'and' ? :
115 23 0 if defined $v
118 0 3 unless $self->value
127 51 47 $_[1] ? :
142 3 173 if ref $token eq "SCALAR"
151 5 0 substr($token, 0, 1) eq q['] ? :
101 5 substr($token, 0, 1) eq '"' ? :
159 11 3 ref $self eq 'MF::STRING' && $to eq 'MF::PATTERN' ? :
14 14 ref $self eq 'MF::STRING' && $to eq 'MF::REGEXP' ? :
168 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') { }
169 5 1 $right->isa('MF::STRING') ? :
170 6 0 if $r
173 0 9 $right->isa('MF::REGEXP') ? :
9 0 if (my $r = $right->isa("MF::REGEXP") ? $right : $right->cast("MF::REGEXP", $context))
174 7 2 if (my(@captures) = $self->value =~ $r->regexp)
182 0 4 $right->isa('MF::REGEXP') ? :
183 4 0 if $r
187 2 10 $right->isa('MF::PATTERN') || $right->isa('MF::REGEXP') ? :
188 6 6 $op eq 'like' ? :
0 12 !$r ? :
190 12 0 if $r
193 21 0 $right->isa('MF::STRING') ? :
206 0 8 unless $string_attrs{$_[1]}
218 4 8 $_[0]->value == 0 ? :
1 3 $to eq 'MF::FLOAT' ? :
12 4 $to eq 'MF::BOOLEAN' ? :
225 5 0 $op eq '-' ? :
4 5 $op eq '+' ? :
234 3 52 if $op eq "and" or $op eq "or" or $op eq "xor"
237 1 51 if $right->isa("MF::TIMEZONE")
240 47 5 if ($right->isa("MF::INTEGER") or $right->isa("MF::FLOAT"))
241 2 25 $op eq '%' ? :
4 27 $op eq '*' ? :
4 31 $op eq '-' ? :
12 35 $op eq '+' ? :
246 22 25 if defined $v
248 24 1 if $op eq "<=>"
251 1 0 if $op eq "/"
255 2 3 if $op eq "*" and $right->isa("MF::DURATION")
273 0 123 unless my($v, $m) = $_[1] =~ /^ ( [0-9]+ (?: _[0-9][0-9][0-9] )* ) ($multipliers)? $/ux
276 3 120 $2 ? :
282 0 2 unless $int_attrs{$_[1]}
294 4 20 $t =~ /[e.]/u ? :
298 1 1 $to eq 'MF::INTEGER' ? :
304 5 0 $op eq '-' ? :
4 5 $op eq '+' ? :
313 0 17 if $op eq "and" or $op eq "or" or $op eq "xor"
316 1 16 if $right->isa("MF::TIMEZONE")
319 17 0 if ($right->isa("MF::FLOAT") or $right->isa("MF::INTEGER"))
321 2 6 $op eq '/' ? :
2 8 $op eq '%' ? :
3 10 $op eq '*' ? :
2 13 $op eq '-' ? :
2 15 $op eq '+' ? :
327 11 6 if defined $v
329 6 0 if $op eq "<=>"
358 0 37 unless $token =~ /^
378 1 0 $to eq 'MF::DATE' ? :
1 1 $to eq 'MF::TIME' ? :
387 3 18 if ($op eq "+" or $op eq "-")
389 2 1 if ($right->isa("MF::DURATION"))
390 1 1 $op eq '+' ? :
393 1 0 if ($op eq "-")
394 1 0 $right->isa('MF::DATETIME') ? :
399 8 10 if ($op eq "<=>")
400 5 3 if $right->isa("MF::DATETIME")
403 3 0 if ($right->isa("MF::DATE"))
406 0 3 $date =~ /\+/u ? :
407 1 2 if "DateTime"->compare($begin, $self->value) > 0
409 0 2 $date =~ /\+/u ? :
410 1 1 'DateTime'->compare($self->value, $end) > 0 ? :
427 0 10 unless $dt_attrs{$_[1]} or $MF::DATE::date_attrs{$_[1]}
448 0 11 unless $token =~ /^
462 2 1 if ($to eq "MF::INTEGER")
469 1 0 if ($to eq "MF::DATETIME")
471 1 0 $t =~ /\+/u ? :
482 1 11 if ($op eq "+" and $right->isa("MF::TIME"))
492 1 10 if ($op eq "-" and $right->isa("MF::DATE"))
496 2 8 if ($op eq "+" or $op eq "-")
497 2 0 $right->isa('MF::DURATION') ? :
498 0 2 if $r and $r->token =~ /T.*[1-9]/u
503 1 1 $op eq '+' ? :
507 4 4 if ($op eq "<=>")
508 4 0 $right->isa('MF::DATE') ? :
513 1 3 unless $ld ne $rd or ($ltz // "") eq ($rtz // "")
529 0 4 unless $date_attrs{$_[1]}
544 2 5 $ns ? :
550 0 23 unless $token =~ /^ ([01][0-9]|2[0-3]) \: ([0-5][0-9]) \: ([0-5][0-9]) (?:(\.[0-9]+))? $/ux
563 0 10 unless $time_attrs{$_[1]}
567 1 7 if ($ns < 0) { }
0 7 elsif ($ns > 1000000000) { }
580 8 5 if ($op eq "+" or $op eq "-")
585 3 5 $right->isa('MF::TIME') ? :
5 3 if (my $r = $right->isa("MF::TIME") ? $right : $right->cast("MF::TIME", $context))
589 2 3 $diff->{'nanosecond'} ? :
594 3 0 $right->isa('MF::DURATION') ? :
3 0 if (my $r = $right->isa("MF::DURATION") ? $right : $right->cast("MF::DURATION", $context))
599 2 1 $op eq '+' ? :
600 2 1 $op eq '+' ? :
620 2 2 if $count < 0
630 0 12 unless $token =~ /^ ([+-]) (0[0-9]|1[012]) ([0-5][0-9]) $/ux
633 3 9 $1 eq '-' ? :
638 5 1 if ($to->isa("MF::INTEGER") or $to->isa("MF::FLOAT"))
652 0 2 unless $tz_attrs{$_[1]}
656 1 0 $op eq '-' ? :
1 1 $op eq '+' ? :
665 3 2 if ($op eq "+" or $op eq "-")
666 3 0 $right->isa('MF::DURATION') ? :
3 0 if (my $d = $right->isa("MF::DURATION") ? $right : $right->cast("MF::DURATION"))
667 2 1 $op eq '-' ? :
692 3 10 $_[1]->is_negative ? :
698 2 38 $negative ? :
703 1 0 $op eq '-' ? :
1 1 $op eq '+' ? :
712 4 12 if ($op eq '+' or $op eq '-') { }
4 8 elsif ($op eq '*') { }
6 2 elsif ($op eq '<=>') { }
713 4 0 $right->isa('MF::DURATION') ? :
715 2 2 $op eq '+' ? :
0 4 !$r ? :
716 4 0 if $r
719 4 0 $right->isa('MF::INTEGER') ? :
720 4 0 if $r
723 6 0 $right->isa('MF::DURATION') ? :
724 6 0 if $r
741 0 2 unless $dur_attrs{$_[1]}
760 0 0 unless $name =~ qr/^$pattern$/ou
770 0 2 if ($type->isa("MF::FRAGMENT"))
771 0 0 $self->token eq '' ? :
772 0 0 if $frag
781 4 0 if $op eq "exists"
792 4 17 if ($op eq ".")
793 1 3 $name eq '' ? :
794 4 0 if $left
797 7 10 if ($op eq "#")
798 7 0 $name eq '' ? :
799 7 0 if $left
802 5 5 if ($op eq "//")
803 1 4 defined $context->formula($name) ? :
807 5 0 $left ? :
835 2 104 if (length $char == 2)
836 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 ',') { }
841 1 1 $in_range && $regexp[-1] eq '[' ? :
842 1 4 $in_range ? :
4 1 unless $in_range
843 1 4 $in_range ? :
4 1 unless $in_range
844 8 2 $in_alts ? :
868 2 15 if defined $self->[2]
889 7 8 if ($op eq "#" and $right->isa("MF::NAME"))
890 0 7 unless my $fragment = $self->context->fragment($name)
897 8 0 if ($op eq "." and $right->isa("MF::NAME"))
899 8 0 if $result