Branch Coverage

blib/lib/Object/Hybrid.pm
Criterion Covered Total %
branch 140 320 43.7


line true false branch
572 0 51 ref $primitive ? :
596 0 2 ref $_[0] eq 'HASH' ? :
0 2 !@_ ? :
0 2 @_ > 1 ? :
605 4 2 unless exists $opt->{$list}
608 0 2 unless ref $opt->{$list} eq 'ARRAY'
614 2 0 ref $opt->{'feature'} eq 'ARRAY' ? :
615 2 0 if ($feature eq 'promote')
618 0 2 if ($feature eq 'autobox') { }
0 2 elsif ($feature eq 'autopromote') { }
0 2 elsif ($feature eq 'HASTE') { }
645 0 0 unless $_[0]->can($$autoload)
653 0 2 if ($opt->{'HASTE'})
657 2 0 if ($opt->{'export'})
659 0 2 unless $opt->{'export'}
660 2 0 if ($symbol eq 'promote') { }
667 0 2 if (@symbols or @{(ref $self || $self) . '::EXPORT';} or @{'Object::Hybrid::EXPORT';})
672 0 0 unless Exporter::export_to_level(1, $self, @symbols)
677 0 2 if (@goto)
686 0 113 unless @_ > 1
690 0 30 ref $_[1] eq 'HASH' ? :
30 83 unless @_ - 2 * int(@_ / 2)
694 0 113 if ref $primitive eq ($class || 'Object::Hybrid::CLASS')
697 0 113 unless not _ref_isa($primitive) or $self->Class->is($primitive)
706 30 83 if ($class)
708 0 10 unless _can_tie($class, $primitive) or $class4type{$primitive_type ||= _ref_type($primitive)} or $self->Class->is($class)
713 0 113 unless ref $primitive
715 0 113 unless $class4type{$primitive_type ||= _ref_type($primitive)}
721 0 77 defined $self->Class->mutable_class($class) ? :
36 77 defined $args->{'mutable_class'} ? :
725 30 83 if ($class) { }
726 30 0 unless ($self->Class->is($class))
733 0 3 $mutable_class ? :
3 27 unless @{$make_class . '::ISA';}
738 74 9 if ($mutable_class) { }
746 2 7 unless @{$make_class . '::ISA';}
755 0 113 $bless ? :
764 0 12 unless ref $_[1]
770 0 0 $_[1] =~ /(?:^|=)GLOB/ ? :
0 0 $_[1] =~ /(?:^|=)ARRAY/ ? :
0 0 $_[1] =~ /(?:^|=)SCALAR/ ? :
12 0 $_[1] =~ /(?:^|=)HASH/ ? :
0 12 unless my $tied = $_[1] =~ /(?:^|=)HASH/ ? CORE::tie(%{$_[1];}, @_[2 .. $#_]) : ($_[1] =~ /(?:^|=)SCALAR/ ? CORE::tie(${$_[1];}, @_[2 .. $#_]) : ($_[1] =~ /(?:^|=)ARRAY/ ? CORE::tie(@{$_[1];}, @_[2 .. $#_]) : ($_[1] =~ /(?:^|=)GLOB/ ? CORE::tie(*{$_[1];}, @_[2 .. $#_]) : undef)))
780 0 226 unless $_
781 113 113 if (ref $AD{$_} eq 'CODE') { }
784 0 113 !exists $AD{$_} ? :
0 0 unless not $@
0 0 if ($_[1] =~ /^-\w$/) { }
6 4 if defined $_[0]->FILENO
0 10 @_ == 2 ? :
0 6 unless @_ >= 3
0 0 @_ >= 4 ? :
6 0 @_ == 3 ? :
0 6 unless not $@
0 0 unless eval { do { $fh = *$fh } }, !$@
0 0 if ($fh eq '') { }
0 0 if @open_args
0 0 unless @_ >= 3
0 0 unless not $@
0 0 unless $_[0]->can('TIEHANDLE')
786 0 113 if $@
796 0 30 unless $_[0]
805 16 10 eval { do { $_[0]->can('TIE' . _ref_type($_[1])) } } ? :
0 0 eval { do { $_[0]->can('TIEHANDLE') } } ? :
0 0 eval { do { $_[0]->can('TIEARRAY') } } ? :
0 0 eval { do { $_[0]->can('TIESCALAR') } } ? :
4 0 eval { do { $_[0]->can('TIEHASH') } } ? :
26 4 ref $_[1] ? :
811 0 0 unless ref $_[0]
820 4 109 unless ref $_[0]
824 4 0 $_[0] =~ /(?:^|=)GLOB/ ? :
0 4 $_[0] =~ /(?:^|=)ARRAY/ ? :
0 4 $_[0] =~ /(?:^|=)SCALAR/ ? :
105 4 $_[0] =~ /(?:^|=)HASH/ ? :
830 0 139 unless ref $_[0]
831 56 83 if $_[0] =~ /=(\w+)/
837 4 109 unless ref $_[0]
838 65 44 if exists $class4type{ref $_[0]}
839 0 44 if defined $_[1] and not $_[0]->isa($_[1])
845 268 471 $_[0] =~ /[A-Z]/ ? :
851 2 115 ref $_[0] eq 'HASH' ? :
857 0 383 unless ref $subs->{$method} eq 'CODE' or ref($subs->{$method} = $$subs{$subs->{$method}}) eq 'CODE'
986 3 0 if $swap = tied *{$_[0];}
0 3 if $METHOD eq 'can'
0 3 !$can_method && $Object::Hybrid::HASTE ? :
3 0 if $swap or $can_method
3 0 if $swap
3 0 unless ($sub_method)
0 3 if $can_method
0 0 unless $sub_method or $METHOD_is_lc and $Object::Hybrid::Portable and return
0 3 unless $sub_method ne $SUB_METHOD
0 0 if $swap = tied %{$_[0];}
0 0 if $METHOD eq 'can'
0 0 !$can_method && $Object::Hybrid::HASTE ? :
0 0 if $swap or $can_method
0 0 if $swap
0 0 unless ($sub_method)
0 0 if $can_method
0 0 unless $sub_method or $METHOD_is_lc and $Object::Hybrid::Portable and return
0 0 unless $sub_method ne $SUB_METHOD
81 2 if $swap = tied *{$_[0];}
5 78 if $METHOD eq 'can'
0 83 !$can_method && $Object::Hybrid::HASTE ? :
83 0 if $swap or $can_method
7 2 if $swap
9 74 unless ($sub_method)
5 78 if $can_method
0 0 unless $sub_method or $METHOD_is_lc and $Object::Hybrid::Portable and return
0 74 unless $sub_method ne $SUB_METHOD
0 0 unless ref $_[0]
0 0 $_[0] =~ /=(\w+)/ ? :
0 0 $type eq 'GLOB' ? :
0 0 $type eq 'ARRAY' ? :
0 0 $type eq 'SCALAR' ? :
0 0 $type eq 'HASH' ? :
0 0 unless ref $_[0]
0 0 $_[0] =~ /=(\w+)/ ? :
0 0 $type eq 'GLOB' ? :
0 0 $type eq 'ARRAY' ? :
0 0 $type eq 'SCALAR' ? :
0 0 $type eq 'HASH' ? :
0 1 unless @_ > 1
0 0 unless @_ > 1
72 12 if $swap = tied %{$_[0];}
0 84 if $METHOD eq 'can'
0 72 !$can_method && $Object::Hybrid::HASTE ? :
72 12 if $swap or $can_method
36 12 if $swap
48 36 unless ($sub_method)
0 84 if $can_method
0 0 unless $sub_method or $METHOD_is_lc and $Object::Hybrid::Portable and return
0 84 unless $sub_method ne $SUB_METHOD
0 12 if $swap = tied %{$_[0];}
0 12 if $METHOD eq 'can'
0 0 !$can_method && $Object::Hybrid::HASTE ? :
0 12 if $swap or $can_method
0 12 if $swap
12 0 unless ($sub_method)
0 12 if $can_method
0 0 unless $sub_method or $METHOD_is_lc and $Object::Hybrid::Portable and return
0 0 unless $sub_method ne $SUB_METHOD
0 4 if $swap = tied *{$_[0];}
0 4 if $METHOD eq 'can'
0 0 !$can_method && $Object::Hybrid::HASTE ? :
0 4 if $swap or $can_method
0 4 if $swap
4 0 unless ($sub_method)
0 4 if $can_method
0 0 unless $sub_method or $METHOD_is_lc and $Object::Hybrid::Portable and return
0 0 unless $sub_method ne $SUB_METHOD
132 102 if $swap = tied %{$_[0];}
234 0 if $METHOD eq 'can'
0 234 !$can_method && $Object::Hybrid::HASTE ? :
234 0 if $swap or $can_method
60 74 if $swap
134 100 unless ($sub_method)
234 0 if $can_method
0 0 unless $sub_method or $METHOD_is_lc and $Object::Hybrid::Portable and return
0 0 unless $sub_method ne $SUB_METHOD
987 0 113 unless not $@