Condition Coverage

blib/lib/Math/BigRat.pm
Criterion Covered Total %
condition 235 411 57.1


and 3 conditions

line !l l&&!r l&&r condition
101 0 0 0 defined $cmp && $_[2]
262 10 19659 1 @_ == 1 and not defined $n
0 0 10 defined $n && defined $d
19659 10 0 @_ == 2 and not defined $n && defined $d
304 0 0 0 defined $downgrade and $n->is_int
348 12643 1 5 defined $downgrade and $n->is_int
359 5 1 401 ref $d and $d->isa('Math::BigRat') || $d->isa('Math::BigInt') || $d->isa('Math::BigFloat')
435 0 0 0 defined $downgrade and $self->is_int
542 0 0 0 defined $downgrade and $self->is_int
601 16 384 351 defined $sign && substr($sign, 0, 1) eq '-'
625 5 6 2 defined $sign and $sign eq "-"
664 5 1 6 @_ == 1 and ref $_[0] ne "HASH"
689 20557 7986 1200 $x->{'sign'} ne "+" and $x->{'sign'} ne "-"
696 28543 0 0 defined $upgrade and not $x->isa($class)
717 4 1 3 $x->{'sign'} ne "+" and $x->{'sign'} ne "-"
724 5 0 0 defined $upgrade and not $x->isa($class)
742 0 0 0 $x->{'sign'} ne "+" and $x->{'sign'} ne "-"
749 0 0 0 defined $upgrade and not $x->isa($class)
814 17 7 2 $x->{'sign'} eq "+" and $LIB->_is_zero($x->{'_n'})
817 20 2 4 defined $downgrade and $LIB->_is_one($x->{'_d'})
834 128 74 123 $x->is_finite and $y->is_finite
889 28 56 7 $x->{'sign'} eq "+" and $x->is_zero
892 61 14 16 $x->{'sign'} eq "+" and $x->is_zero
915 4 4 5 $x->{'sign'} =~ /^\+/ and $y->{'sign'} =~ /^\+/
916 4 2 2 $x->{'sign'} =~ /^-/ and $y->{'sign'} =~ /^-/
1000 8 0 0 defined $downgrade and $quo->is_int
1002 5 3 0 $wantarray and defined $downgrade
8 0 0 $wantarray and defined $downgrade and $rem->is_int
1021 0 0 0 defined $downgrade and $quo->is_int
1023 0 0 0 $wantarray and defined $downgrade
0 0 0 $wantarray and defined $downgrade and $rem->is_int
1042 0 0 0 defined $downgrade and $quo->is_int
1044 0 0 0 defined $downgrade and $rem->is_int
1090 6 0 0 defined $downgrade and $x->is_int
1091 6 0 0 defined $downgrade and $rem->is_int
1136 0 0 0 defined $downgrade and $x->is_int
1231 7 24 9789 $x->{'sign'} =~ /^[+-]$/ and $LIB->_is_one($x->{'_d'})
1239 159 417 73 $x->{'sign'} eq "+" and $LIB->_is_zero($x->{'_n'})
1251 134 119 58 $x->{'sign'} eq $sign and $LIB->_is_one($x->{'_n'})
253 21 37 $x->{'sign'} eq $sign and $LIB->_is_one($x->{'_n'}) and $LIB->_is_one($x->{'_d'})
1260 4 7 10 $LIB->_is_one($x->{'_d'}) and $LIB->_is_odd($x->{'_n'})
4 10 11 $x->{'sign'} =~ /^[+-]$/ and ($LIB->_is_one($x->{'_d'}) and $LIB->_is_odd($x->{'_n'}))
1270 4 5 6 $LIB->_is_one($x->{'_d'}) and $LIB->_is_even($x->{'_n'})
1391 8 4 2 $x->{'sign'} eq "-" and $LIB->_is_zero($x->{'_n'})
1425 410 0 1 $x->{'sign'} eq "-" and $LIB->_is_zero($x->{'_n'})
1471 3 4 3 $x > -1 and $x < 1
1476 3 4 3 $x > -1 and $x < 1
1489 47 35 20 $x->is_negative and not $y->is_int
1510 27 8 12 $x->{'sign'} eq "-" and $LIB->_is_even($y->{'_n'})
1531 20 0 0 not ref $_[0] and $_[0] =~ /^[A-Za-z]|::/
1566 2 0 0 defined $base && $base < 1
1573 2 1 0 defined $base && $base < 1
1588 1 0 2 defined &blessed($base) and $base->isa($class)
1728 72 4860 0 $x->is_finite and not $x->is_int
72 4860 0 $y->is_finite and not $y->is_int
1873 0 0 0 ref $b and $b->isa($class)
1887 0 0 0 ref $b and $b->isa($class)
1996 1245 2 0 defined $downgrade and $x->is_int || $x->is_inf || $x->is_nan
2003 0 0 4 defined $downgrade and $x->is_int || $x->is_inf || $x->is_nan
2010 0 0 4 defined $downgrade and $x->is_int || $x->is_inf || $x->is_nan
2029 0 0 54 $x->{'sign'} =~ /^[+-]$/ and $y->{'sign'} =~ /^[+-]$/
2033 0 0 0 $x->{'sign'} eq $y->{'sign'} and $x->{'sign'} =~ /^[+-]inf$/
2045 20 20 14 $x->{'sign'} eq "+" and $y->{'sign'} eq "-"
2047 20 15 5 $x->{'sign'} eq "-" and $y->{'sign'} eq "+"
2054 32 3 0 $xz and $yz
2055 32 0 3 $xz and $y->{'sign'} eq "+"
2056 32 0 0 $yz and $x->{'sign'} eq "+"
2076 22 13 15 $x->{'sign'} =~ /^[+-]$/ and $y->{'sign'} =~ /^[+-]$/
2079 12 12 4 $x->{'sign'} =~ /^[+-]inf$/ and $y->{'sign'} =~ /^[+-]inf$/
2080 12 0 12 $x->{'sign'} =~ /^[+-]inf$/ and not $y->{'sign'} =~ /^[+-]inf$/
2098 0 8 2 defined $cmp && !$cmp
2110 0 0 0 defined $cmp && !$cmp
2122 0 10 9 defined $cmp && $cmp < 0
2134 0 0 0 defined $cmp && $cmp <= 0
2146 0 10 14 defined $cmp && $cmp > 0
2159 0 0 0 defined $cmp && $cmp >= 0

or 2 conditions

line l !l condition
662 12 0 shift() || 'Math::BigRat'
1248 198 113 $_[1] || ''
1372 9 2 $n || 0

or 3 conditions

line l !l&&r !l&&!r condition
239 0 19671 0 $protoref || $proto
262 1 0 19669 @_ == 1 and not defined $n or @_ == 2 and not defined $n && defined $d
276 0 5818 10 $n->isa("Math::BigRat") or $n->isa("Math::BigInt")
5818 10 0 $n->isa("Math::BigRat") or $n->isa("Math::BigInt") or $n->isa("Math::BigFloat")
359 5 397 0 $d->isa('Math::BigRat') || $d->isa('Math::BigInt') || $d->isa('Math::BigFloat')
366 3 0 404 $n->is_nan or $d->is_nan
550 1319 0 0 $selfref || $self
573 193 344 0 $selfref || $self
596 175 576 0 $selfref || $self
622 12 1 0 $selfref || $self
643 32 30 0 $selfref || $self
830 0 91 234 not ref $_[0] or ref $_[0] ne ref $_[1]
835 34 28 140 $x->is_nan or $y->is_nan
883 0 5 86 not ref $_[0] or ref $_[0] ne ref $_[1]
903 0 6 87 not ref $_[0] or ref $_[0] ne ref $_[1]
907 5 3 85 $x->{'sign'} eq "NaN" or $y->{'sign'} eq "NaN"
910 9 4 72 $x->{'sign'} =~ /^[+-]inf$/ or $y->{'sign'} =~ /^[+-]inf$/
911 0 0 13 $x->is_zero or $y->is_zero
961 0 7 80 not ref $_[0] or ref $_[0] ne ref $_[1]
973 2 3 82 $x->is_nan or $y->is_nan
1035 0 0 0 $x->is_zero or $x->bcmp(0) == $y->bcmp(0)
1049 0 0 2 $x->is_nan or $x->is_inf
1104 0 0 21 not ref $_[0] or ref $_[0] ne ref $_[1]
1113 1 1 19 $x->is_nan or $y->is_nan
1135 0 0 0 $x->is_zero or $x->bcmp(0) == $y->bcmp(0)
1381 5 5 14 not $x->{'sign'} =~ /^[+-]$/ or $LIB->_is_one($x->{'_d'})
1399 5 19 28 not $x->{'sign'} =~ /^[+-]$/ or $LIB->_is_one($x->{'_d'})
1416 24 528 411 not $x->{'sign'} =~ /^[+-]$/ or $LIB->_is_one($x->{'_d'})
1434 3 0 10 $x->{'sign'} ne "+" or not $LIB->_is_one($x->{'_d'})
1450 0 6 184 not ref $_[0] or ref $_[0] ne ref $_[1]
1457 15 14 161 $x->is_nan or $y->is_nan
1495 11 9 62 $x->is_one("+") or $y->is_one
1550 2 0 5 $base->is_nan or $base->is_one
0 0 5 $base->is_inf or $base->is_zero
1553 0 0 0 $x->is_inf or $x->is_zero
1628 0 1 0 not ref $_[0] or ref $_[0] ne ref $_[1]
1653 0 0 0 $params[0] or $params[1]
1723 0 2478 2478 not ref $_[0] or ref $_[0] ne ref $_[1]
1727 16 8 4932 $x->is_nan or $y->is_nan
1728 0 0 4932 $x->is_finite and not $x->is_int or $y->is_finite and not $y->is_int
1747 0 5 2 not ref $_[0] or ref $_[0] ne ref $_[1]
1779 0 0 19 not ref $_[0] or ref $_[0] ne ref $_[1]
1802 0 0 17 not ref $_[0] or ref $_[0] ne ref $_[1]
1825 1 1 13 $x->is_zero or $x->is_one
1875 0 0 0 $x->is_nan or $y->is_nan
0 0 0 $x->is_nan or $y->is_nan or $b->is_nan
1889 0 0 0 $x->is_nan or $y->is_nan
0 0 0 $x->is_nan or $y->is_nan or $b->is_nan
1902 289 0 0 $xref || $x
1926 289 0 0 $xref || $x
1950 289 0 0 $xref || $x
1974 0 0 0 $xref || $x
1996 2 0 0 $x->is_int || $x->is_inf || $x->is_nan
2003 3 1 0 $x->is_int || $x->is_inf || $x->is_nan
2010 3 1 0 $x->is_int || $x->is_inf || $x->is_nan
2025 0 36 18 not ref $_[0] or ref $_[0] ne ref $_[1]
2031 0 0 0 $x->{'sign'} eq $nan or $y->{'sign'} eq $nan
2072 0 0 50 not ref $_[0] or ref $_[0] ne ref $_[1]
2078 4 3 28 $x->{'sign'} eq $nan or $y->{'sign'} eq $nan