Condition Coverage

blib/lib/Algorithm/C3.pm
Criterion Covered Total %
condition 16 16 100.0


or 2 conditions

line l !l condition
13 22 44 $cache ||= {}
54 166 212 $cache->{'pfetch'}{$current_root} ||= [$current_root->$parent_fetcher]

or 3 conditions

line l !l&&r !l&&!r condition
19 55 10 1 $pfetcher_is_coderef or $root->can($parent_fetcher)
38 8 6 13 $reached or $reached = $STACK[$i] eq $new_root
47 335 43 1 $pfetcher_is_coderef or $new_root->can($parent_fetcher)
62 186 220 1 $cache->{'merge'}{$current_root} ||= do { my(@seqs) = map({[@$_];} @$recurse_mergeout); push @seqs, [@$current_parents] if @$current_parents; foreach my $seq (@seqs) { ++$tails{$seq->[$_]} foreach (1 .. $#$seq); } ; my(@res) = $current_root; while (1) { my($cand, $winner); foreach $_ (@seqs) { next unless @$_; if (not $winner) { $cand = $_->[0]; next if $tails{$cand}; push @res, $winner = $cand; shift @$_; --$tails{$_->[0]} if @$_; } elsif ($_->[0] eq $winner) { shift @$_; --$tails{$_->[0]} if @$_; } ; } ; last unless $cand; die q[Inconsistent hierarchy found while merging '] . $current_root . "':\n\t" . "current merge results [\n\t\t" . join(",\n\t\t", @res) . "\n\t]\n\t" . "merging failed on '${cand}'\n" unless $winner; } ; \@res }