Branch Coverage

blib/lib/Yote.pm
Criterion Covered Total %
branch 251 424 59.2


line true false branch
179 0 8 unless ref $self
181 1 7 unless ($root)
221 0 0 unless $r
222 0 0 if ($r eq 'ARRAY') { }
0 0 elsif ($r eq 'HASH') { }
252 0 0 if (ref $obj)
291 126 14188 unless $id
296 5846 8342 if (defined $ref) { }
300 2737 5605 if ($ref)
307 5600 5 if ($obj_arry)
309 11 5589 if ($class eq 'ARRAY') { }
11 5578 elsif ($class eq 'Yote::ArrayGatekeeper') { }
0 5578 elsif ($class eq 'HASH') { }
5557 21 elsif ($class eq 'Yote::BigHash') { }
337 21 0 unless ($INC{$class})
342 0 21 if $@
367 23 13 if $has_keep
376 3 2 if ($do_purge) { }
396 1 1 if (-e $backdir)
398 0 1 if (-d $oldback)
402 0 1 unless move($backdir, $oldback)
405 0 2 if (-x $newdir)
414 4 10 if ($has_keep) { }
3 7 elsif ($self->{'_DATASTORE'}{'DATA_STORE'}->has_id($keep_id)) { }
427 0 2 unless move($original_dir, $backdir)
428 0 2 unless move($newdir, $original_dir)
455 48 29 if ($ref eq 'ARRAY') { }
23 6 elsif ($ref eq 'HASH') { }
456 24 24 ref tied @$obj eq 'Yote::ArrayGatekeeper' ? :
458 23 0 ref tied %$obj eq 'Yote::BigHash' ? :
479 0 0 if ($ref eq 'ARRAY' or $ref eq 'Yote::Array') { }
0 0 elsif ($ref eq 'HASH') { }
482 0 0 ref tied %$ref eq 'Yote::BigHash' ? :
511 15 0 unless $INC{$pkg}
548 0 221 unless $class
550 0 221 if ($class eq 'Yote::Array') { }
125 96 elsif ($class eq 'ARRAY') { }
0 96 elsif ($class eq 'Yote::Hash' or $class eq 'Yote::BigHash') { }
72 24 elsif ($class eq 'HASH') { }
555 101 24 if ($tied)
562 0 24 if @data
572 49 23 if ($tied) { }
573 49 0 ref $tied eq 'Yote::BigHash' ? :
592 21 3 if $ref->{'ID'}
593 0 3 if ($class eq 'Yote::Root') { }
607 0 5 unless $class
609 0 5 unless $id
613 2 3 if ($class eq 'ARRAY') { }
0 3 elsif ($class eq 'HASH') { }
0 3 elsif ($class eq 'Yote::Array') { }
0 3 elsif ($class eq 'Yote::ArrayGatekeeper') { }
0 3 elsif ($class eq 'Yote::Hash') { }
0 3 elsif ($class eq 'Yote::BigHash') { }
614 2 0 ref tied @$obj eq 'Yote::ArrayGatekeeper' ? :
619 0 0 ref tied %$obj eq 'Yote::BigHash' ? :
624 0 0 if ($self->_is_dirty($id))
629 0 0 if ($child =~ /^[0-9]/ and $self->{'_DIRTY'}{$child})
635 0 0 if ($self->_is_dirty($id))
640 0 0 if ($child =~ /^[0-9]/ and $self->{'_DIRTY'}{$child})
646 0 0 if ($self->_is_dirty($id))
651 0 0 if ($child =~ /^[0-9]/ and $self->{'_DIRTY'}{$child})
657 0 0 if ($self->_is_dirty($id))
662 0 0 if ($child =~ /^[0-9]/ and $self->{'_DIRTY'}{$child})
668 3 0 if ($self->_is_dirty($id))
673 0 2 if ($val =~ /^[0-9]/ and $self->{'_DIRTY'}{$val})
683 8 1511 if (ref $val)
686 1511 0 defined $val ? :
691 3 17463 unless defined $val
692 6706 10757 if (index($val, 'v') == 0)
705 0 3 ref $obj ? :
716 0 82 unless $class
718 0 82 unless $id
721 50 32 if ($class eq 'ARRAY') { }
23 9 elsif ($class eq 'HASH') { }
0 9 elsif ($class eq 'Yote::Array') { }
0 9 elsif ($class eq 'Yote::ArrayGatekeeper') { }
0 9 elsif ($class eq 'Yote::Hash') { }
0 9 elsif ($class eq 'Yote::BigHash') { }
723 50 0 if ($tied) { }
732 23 0 if (ref $tied eq 'Yote::BigHash') { }
0 0 elsif (ref $tied eq 'Yote::Hash') { }
764 23 59 if ($is_hash)
765 15 8 if ($hash_type eq 'S')
766 1366 0 if (defined $_)
768 21 63 if (defined $_)
770 26 33 if ($is_array eq 'Yote::ArrayGatekeeper') { }
24 9 elsif ($is_array) { }
771 23 0 if (defined $_)
773 548 83 if (defined $_)
775 30 0 if (defined $_)
782 0 5677 unless $ref
826 0 0 if ref $_[1]
827 0 0 unless not ref $_[1]
828 0 0 if ref $_[1]
829 0 0 unless not ref $_[1]
862 0 0 if ($self->{'DATA'}{$fld} ne $inval)
866 0 0 unless (defined $inval)
885 0 0 if (not defined $cur and defined $default)
886 0 0 if (ref $default)
908 1 11 if ($func =~ /:add_to_(.*)/) { }
0 11 elsif ($func =~ /:add_once_to_(.*)/) { }
0 11 elsif ($func =~ /:remove_from_(.*)/) { }
0 11 elsif ($func =~ /:remove_all_from_(.*)/) { }
1 10 elsif ($func =~ /:set_(.*)/) { }
10 0 elsif ($func =~ /:get_(.*)/) { }
928 0 0 unless (grep {$val eq $_;} @$arry)
945 0 0 if ($arry->[$i] eq $val)
966 0 0 if ($arry->[$i] eq $val)
969 0 0 unless $count
984 1 0 if $self->{'DATA'}{$fld} ne $inval
985 0 1 unless (defined $inval)
999 3 24 if (not defined $self->{'DATA'}{$fld} and defined $init_val)
1000 3 0 if (ref $init_val)
1061 4 0 if (ref $data eq 'HASH') { }
0 0 elsif ($data) { }
1234 1 3840 if ($size > $self->[3])
1275 3523 29 if ($block_id) { }
28 1 elsif ($self->[7] == 1) { }
1316 2 28 if ($idx > $last_block_idx)
1323 4 2 if ($size < $self->[6])
1342 0 2 if (1 + $idx == $self->[6])
1349 0 0 if ($curr_block_start_idx == $prev_idx)
1369 0 281 unless @vals
1384 7 281 if (@vals)
1393 4 0 if (@$blocks)
1396 0 4 if (@$lastblock == 0)
1409 3 0 if (@$blocks)
1416 0 5 if ($#$blocks == -1)
1435 0 6 unless @vals
1442 4 2 if ($self->[7] == 1) { }
1447 8 4 if ($#$block >= $self->[5]) { }
1460 2 2 if ($overflow > 0) { }
1472 2 0 if (@vals)
1490 0 3 unless @vals or $remove_length
1498 2 1 if ($delta > 0)
1506 3 0 if (@vals)
1511 1 2 if ($remove_length > 0)
1525 5 8 if (@removed < $remove_length)
1589 0 0 wantarray ? :
1594 0 0 wantarray ? :
1664 21 5036 unless ($obj_id)
1665 0 21 if $return_undef
1681 2777 12455 $_ > 0 && ref $obj_store->_xform_out($_) eq 'HASH' ? :
1386 4194 $type eq 'B' ? :
1688 4194 1386 if ($type eq 'S') { }
1704 904 1364 if ($self->[8] eq 'S')
1706 902 2 unless exists $data->{$key}
1709 8 896 if ($self->[4] > $self->[7])
1722 1077 287 if ($self->[5][$bid]) { }
1723 1077 0 unless exists $bucket->{$key}
1726 21 266 if (@$bucket > $self->[7])
1736 21 0 unless exists $newbuck->{$key}
1743 0 1666 if ($bucket->[$i] eq $key)
1756 29 16 if ($self->[8] eq 'S')
1759 0 29 wantarray ? :
1768 1370 2744 if ($self->[8] eq 'S')
1770 0 1370 wantarray ? :
1780 2896 0 defined $bid ? :
1781 2770 126 if ($bucket)
1782 2770 0 if ($self->[5][$bid]) { }
1784 2728 42 defined $idx_in_bucket ? :
1785 2728 42 if (defined $key)
1790 0 2728 wantarray ? :
1793 0 0 if ($idx_in_bucket < $#$bucket)
1796 0 0 wantarray ? :
1810 1762 1850 if ($self->[8] eq 'S')
1815 1836 14 if ($self->[5][$bid]) { }
1819 14 172 if ($bucket->[$i] eq $key)
1828 1760 1843 if ($self->[8] eq 'S')
1833 1822 21 if ($self->[5][$bid]) { }
1837 0 304 if ($bucket->[$i] eq $key)
1850 1 0 if ($self->[8] eq 'S')
1851 1 0 if (exists $self->[1]{$key})
1860 0 0 unless $bucket
1863 0 0 if ($self->[5][$bid]) { }
1865 0 0 if exists $bucket->{$key}
1869 0 0 if ($bucket->[$i] eq $key)
1886 0 0 if ($self->[8] eq 'S')
1892 0 0 if ($self->[5][$bid]) { }
1942 0 7 if ($@)
1943 0 0 if ($@ =~ /old format/)
1966 5 5628 unless $data
1969 0 5628 if $pos == -1
1970 0 5628 if $pos == -1
1981 9 5619 if (0 < grep({/\\$/;} @$parts))
1990 54 72 if ($part =~ /(^|[^\\])((\\\\)+)?[\\]$/) { }
36 36 elsif ($is_hanging) { }
1991 18 36 if ($is_hanging) { }
2008 0 9 if ($is_hanging)
2014 5593 35 if ($class eq 'ARRAY' or $class eq 'Yote::BigHash' or $class eq 'Yote::ArrayGatekeeper') { }
2075 4 24 if ($obj_arry->[1] eq 'Yote::BigHash') { }
8 16 elsif ($obj_arry->[1] eq 'Yote::ArrayGatekeeper') { }
2 14 elsif (ref $obj_arry->[2] eq 'ARRAY') { }
2078 4 0 if ($type eq 'S') { }
2080 4 0 if /^[^v]/
2082 0 0 if /^[^v]/
2090 2 0 if /^[^v]/
2093 2 18 if /^[^v]/
2096 10 24 if /^[^v]/
2098 0 28 if (@checks > 1000000)
2101 0 0 unless ($has_keep)
2107 0 28 if (scalar keys %seen > 1000000)
2132 2 10 unless ($keep)
2133 2 0 if ($self->{'DATA_STORE'}->delete($check_id))
2134 2 0 if ($keep_tally)
2149 0 3 unless $mark_to_keep_store->entry_count > 0
2158 3 1 if ($keep)
2171 2 19 unless ($keep)
2186 0 30 if $cand == 1 and not $keep
2187 4 26 unless ($keep)
2188 1 3 if ($self->{'DATA_STORE'}->delete($cand))
2190 1 0 if ($keep_tally)