Condition Coverage

blib/lib/Object/Hybrid.pm
Criterion Covered Total %
condition 93 315 29.5


and 2 conditions

line l !l condition
964 8 8 $Object::Hybrid::Portable and not +(split(/::/, $Object::Hybrid::BASE::AUTOLOAD, 0))[-1] =~ /[A-Z]/ and return
1195 0 2 $METHOD_is_lc and $Object::Hybrid::Portable and return
0 0 $METHOD_is_lc and $Object::Hybrid::Portable and return

and 3 conditions

line !l l&&!r l&&r condition
792 0 0 5 $HybridClass{ref $primitive} and delete $Object::Hybrid::Cache4object{refaddr $primitive}, 1
828 8 4 3 $no_opt and $class eq ''
906 0 0 0 defined $_[1] and not $_[0]->isa($_[1])
964 2 6 8 $Object::Hybrid::Portable and not +(split(/::/, $Object::Hybrid::BASE::AUTOLOAD, 0))[-1] =~ /[A-Z]/
1171 0 0 4 $type =~ /(HASH|ARRAY|GLOB|SCALAR)/ and my $reftype = $1
1195 0 6 44 $swap and $sub_method = $_[0]->UNIVERSAL::can($METHOD) || $_[0]->UNIVERSAL::can($METHOD2)
2 2 0 $METHOD_is_lc and $Object::Hybrid::Portable
6 0 36 $swap and $sub_method = $_[0]->UNIVERSAL::can($METHOD) || $_[0]->UNIVERSAL::can($METHOD2)
0 0 0 $METHOD_is_lc and $Object::Hybrid::Portable
0 0 0 $METHOD_is_lc and $Object::Hybrid::Portable
0 0 0 $METHOD_is_lc and $Object::Hybrid::Portable

or 2 conditions

line l !l condition
756 6 41 $PromoclassCache2{ref $_[1]}[$primitive_is_tied] || (next)
774 6 65 $PromoclassCache3{ref $primitive}{$class}[$primitive_is_tied] || (next)
786 86 15 $PromoclassCache{ref $primitive}{$class}[$hybrid_is_tieable][$hybrid_is_mutable][$hybrid_is_caller] || (next)
882 0 0 eval { do { tied %{$_[0];} } } || eval { do { tied ${$_[0];} } } || eval { do { tied @{$_[0];} } } || eval { do { tied *{$_[0];} } } || undef
890 80 29 tied %{$_[0];} || 0
0 0 tied ${$_[0];} || 0
0 0 tied @{$_[0];} || 0
2 2 tied *{$_[0];} || 0
1195 31 50 $Object::Hybrid::Cache4object{refaddr($_[0])}{$METHOD} ||= []
0 42 $Object::Hybrid::Cache4object{refaddr($_[0])}{$METHOD} ||= []
0 0 'Object::Hybrid::HASH'->UNIVERSAL::can($METHOD) || die("Cannot find method $METHOD() via $_[0]")
0 0 'Object::Hybrid::HASH'->UNIVERSAL::can($METHOD) || die("Cannot find method $METHOD() via $_[0]")
0 0 'Object::Hybrid::HASH'->UNIVERSAL::can($METHOD2) || die("Cannot find method $METHOD() via $_[0]")
0 0 'Object::Hybrid::HASH'->UNIVERSAL::can($METHOD2) || die("Cannot find method $METHOD() via $_[0]")
0 0 'Object::Hybrid::GLOB'->UNIVERSAL::can($METHOD) || die("Cannot find method $METHOD() via $_[0]")
0 0 'Object::Hybrid::GLOB'->UNIVERSAL::can($METHOD) || die("Cannot find method $METHOD() via $_[0]")
0 0 'Object::Hybrid::GLOB'->UNIVERSAL::can($METHOD2) || die("Cannot find method $METHOD() via $_[0]")
0 0 'Object::Hybrid::GLOB'->UNIVERSAL::can($METHOD2) || die("Cannot find method $METHOD() via $_[0]")

or 3 conditions

line l !l&&r !l&&!r condition
604 15 0 0 $primitive || ()
624 0 0 0 $self->$accessor || ()
631 15 0 0 $$type{'reftype'} or croak(q[No 'reftype' parameter specified])
688 0 0 0 ref $self || $self
0 0 0 $$opt{$feature} || $self->HASH_STATIC
0 0 0 $$opt{$feature} || $self->SCALAR_STATIC
0 0 0 $$opt{$feature} || $self->ARRAY_STATIC
697 0 0 0 ref $self || $self
705 0 0 0 @{$$opt{$feature};} || ()
727 0 0 2 @symbols or @{(ref $self || $self) . '::EXPORT';}
0 0 2 @symbols or @{(ref $self || $self) . '::EXPORT';} or @{'Object::Hybrid::EXPORT';}
728 0 2 0 ref $self || $self
772 0 77 0 ref $self or $self
0 0 77 $DefaultClass{ref $self or $self} ||= $self->CLASS_DEFAULT
30 0 77 $class ||= ($DefaultClass{ref $self or $self} ||= $self->CLASS_DEFAULT)
778 36 58 7 $$args{'tieable'} || $primitive_is_tied
781 94 0 7 $hybrid_is_tieable or $hybrid_is_mutable
0 0 7 $hybrid_is_tieable or $hybrid_is_mutable or $hybrid_is_caller
792 10 0 5 not blessed $primitive or $$args{'rebless'}
10 0 5 not blessed $primitive or $$args{'rebless'} or $HybridClass{ref $primitive} and delete $Object::Hybrid::Cache4object{refaddr $primitive}, 1
815 3 0 0 $typeclass || ()
871 0 4 0 not $class or eval $class, !$@
922 56 0 0 ref $$subs{$method} eq 'CODE' or ref($$subs{$method} = $$subs{$$subs{$method}}) eq 'CODE'
937 10 0 0 ref $_[0] || $_[0]
10 0 0 ref $_[0] || $_[0]
1195 28 0 1 ref $_[0] || $_[0]
28 0 1 ref $_[0] || $_[0]
0 0 3 $_[0]->UNIVERSAL::can($can_method) || $_[0]->UNIVERSAL::can($can_method2 = _alter_case($can_method))
2 0 1 tied *{$_[0];} || $_[0]
0 0 3 $sub_method ||= (tied *{$_[0];} || $_[0])->UNIVERSAL::can($can_method2)
2 0 1 tied *{$_[0];} || $_[0]
0 0 3 $sub_method ||= (tied *{$_[0];} || $_[0])->UNIVERSAL::can($can_method)
0 0 3 'Object::Hybrid::GLOB'->UNIVERSAL::can($can_method) || 'Object::Hybrid::GLOB'->UNIVERSAL::can($can_method2)
0 0 3 $sub_method ||= 'Object::Hybrid::GLOB'->UNIVERSAL::can($can_method) || 'Object::Hybrid::GLOB'->UNIVERSAL::can($can_method2)
0 0 0 'BUG in can() of mutable hybrid class: ' . $err || $@
0 0 3 $err or $@
22 22 6 $_[0]->UNIVERSAL::can($METHOD) || $_[0]->UNIVERSAL::can($METHOD2)
2 0 4 'Object::Hybrid::GLOB'->UNIVERSAL::can($METHOD) || 'Object::Hybrid::GLOB'->UNIVERSAL::can($METHOD2)
0 0 0 ref $_[0] || $_[0]
1 0 1 ref $_[0] || $_[0]
1 0 1 ref $_[0] || $_[0]
89 41 4 $_[0]->UNIVERSAL::can($can_method) || $_[0]->UNIVERSAL::can($can_method2 = _alter_case($can_method))
0 0 4 tied %{$_[0];} || $_[0]
0 0 4 $sub_method ||= (tied %{$_[0];} || $_[0])->UNIVERSAL::can($can_method2)
0 0 4 tied %{$_[0];} || $_[0]
130 0 4 $sub_method ||= (tied %{$_[0];} || $_[0])->UNIVERSAL::can($can_method)
2 0 2 'Object::Hybrid::HASH'->UNIVERSAL::can($can_method) || 'Object::Hybrid::HASH'->UNIVERSAL::can($can_method2)
130 2 2 $sub_method ||= 'Object::Hybrid::HASH'->UNIVERSAL::can($can_method) || 'Object::Hybrid::HASH'->UNIVERSAL::can($can_method2)
0 0 0 'BUG in can() of mutable hybrid class: ' . $err || $@
0 0 134 $err or $@
36 0 0 $_[0]->UNIVERSAL::can($METHOD) || $_[0]->UNIVERSAL::can($METHOD2)
6 0 0 'Object::Hybrid::HASH'->UNIVERSAL::can($METHOD) || 'Object::Hybrid::HASH'->UNIVERSAL::can($METHOD2)
0 0 0 ref $_[0] || $_[0]
0 0 0 $FALLBACK_METHOD ||= 'Object::Hybrid::HASH'->UNIVERSAL::can($METHOD) || die("Cannot find method $METHOD() via $_[0]")
0 0 0 $FALLBACK_METHOD ||= 'Object::Hybrid::HASH'->UNIVERSAL::can($METHOD) || die("Cannot find method $METHOD() via $_[0]")
0 0 0 $FALLBACK_METHOD ||= 'Object::Hybrid::HASH'->UNIVERSAL::can($METHOD2) || die("Cannot find method $METHOD() via $_[0]")
0 0 0 $FALLBACK_METHOD ||= 'Object::Hybrid::HASH'->UNIVERSAL::can($METHOD2) || die("Cannot find method $METHOD() via $_[0]")
0 0 0 $err ||= $@
0 0 0 $err || "Failed to call $METHOD() on $_[0] (this is a BUG)"
0 0 0 CORE::tied %{$_[0];} || $_[0]
0 0 0 eval { do { CORE::tied %{$_[0];} } } || eval { do { CORE::tied ${$_[0];} } } || eval { do { CORE::tied @{$_[0];} } } || eval { do { CORE::tied *{$_[0];} } } || $_[0]
0 0 0 CORE::tied %{$_[0];} || $_[0]
0 0 0 CORE::tied ${$_[0];} || $_[0]
0 0 0 CORE::tied @{$_[0];} || $_[0]
0 0 0 CORE::tied *{$_[0];} || $_[0]
0 0 0 ref $_[0] || $_[0]
0 0 0 $FALLBACK_METHOD ||= 'Object::Hybrid::GLOB'->UNIVERSAL::can($METHOD) || die("Cannot find method $METHOD() via $_[0]")
0 0 0 $FALLBACK_METHOD ||= 'Object::Hybrid::GLOB'->UNIVERSAL::can($METHOD) || die("Cannot find method $METHOD() via $_[0]")
0 0 0 $FALLBACK_METHOD ||= 'Object::Hybrid::GLOB'->UNIVERSAL::can($METHOD2) || die("Cannot find method $METHOD() via $_[0]")
0 0 0 $FALLBACK_METHOD ||= 'Object::Hybrid::GLOB'->UNIVERSAL::can($METHOD2) || die("Cannot find method $METHOD() via $_[0]")
0 0 0 $err ||= $@
0 0 0 $err || "Failed to call $METHOD() on $_[0] (this is a BUG)"
0 0 0 $fh->OPEN(@open_args) or Object::Hybrid::croak($!)
0 0 0 ref $elf || $elf
0 0 0 CORE::tied *{$_[0];} || $_[0]
0 0 0 eval { do { CORE::tied %{$_[0];} } } || eval { do { CORE::tied ${$_[0];} } } || eval { do { CORE::tied @{$_[0];} } } || eval { do { CORE::tied *{$_[0];} } } || $_[0]
0 0 0 CORE::tied %{$_[0];} || $_[0]
0 0 0 CORE::tied ${$_[0];} || $_[0]
0 0 0 CORE::tied @{$_[0];} || $_[0]
0 0 0 CORE::tied *{$_[0];} || $_[0]