Branch Coverage

blib/lib/Iterator/Flex/Factory.pm
Criterion Covered Total %
branch 48 80 60.0


line true false branch
50 144 0 defined $iterable ? :
70 0 93 unless Ref::Util::XS::is_hashref($in_ipar)
73 0 93 unless Ref::Util::XS::is_hashref($in_gpar)
89 0 93 if Ref::Util::XS::is_ref($class)
92 0 93 if $class ne "Iterator::Flex::Base" and not &Module::Runtime::require_module($class)
98 0 93 if defined($par = $ipar{'_name'}) and Ref::Util::XS::is_ref($par)
106 84 9 Ref::Util::XS::is_arrayref($input_exhaustion) ? :
113 72 21 if ($input_exhaustion[0] eq 'return') { }
18 3 elsif ($input_exhaustion[0] eq 'throw') { }
115 0 72 if @input_exhaustion == 1
117 24 48 unless $has_output_exhaustion_policy
124 2 16 unless $has_output_exhaustion_policy
129 0 93 unless defined $ipar{'next'}
134 219 246 unless defined(my $code = $ipar{$method})
136 0 246 unless Ref::Util::XS::is_coderef($code)
141 93 153 if ($method eq 'next') { }
144 3 90 defined $ipar{'_self'} ? :
148 0 153 $class->can($method) ? :
157 0 93 unless (not %ipar_k and not %gpar_k)
159 0 0 if %ipar_k
161 0 0 if %gpar_k
209 1 207 if $action_on_failure ne "throw" and $action_on_failure ne "return"
212 1 206 if %$mpars
217 82 124 if (Ref::Util::XS::is_blessed_ref($obj)) { }
69 55 elsif (Ref::Util::XS::is_arrayref($obj)) { }
52 3 elsif (Ref::Util::XS::is_coderef($obj)) { }
0 3 elsif (Ref::Util::XS::is_globref($obj)) { }
219 82 0 if $obj->isa("Iterator::Flex::Base")
226 0 69 if %$ipars
246 2 1 if $action_on_failure eq "return"
282 0 0 unless (exists $ipar{'next'})
285 0 0 if ($code = can_meth($obj, 'iter')) { }
0 0 elsif ($code = can_meth($obj, 'next') || overload::Method($obj, '<>', undef, undef)) { }
0 0 elsif ($code = overload::Method($obj, '&{}', undef, undef)) { }
0 0 elsif ($code = overload::Method($obj, '@{}', undef, undef)) { }
308 0 0 if $code
327 82 0 exists $Iterator::Flex::Factory::REGISTRY{builtin::refaddr($obj)} ? :
334 10 72 Ref::Util::XS::is_arrayref($exhaustion) ? :
350 44 0 if $want[0] eq $have[0] and defined $want[1] && defined $have[1] && $want[1] eq $have[1] || !(defined $want[1] || defined $have[1])
363 19 209 unless defined(my $code = can_meth($obj, $method))