Branch Coverage

blib/lib/Class/Tangram.pm
Criterion Covered Total %
branch 252 478 52.7


line true false branch
218 19 66 unless exists $types{$class}
220 0 85 if $abstract{$class}
223 3 82 if (ref $invocant) { }
243 0 79 unless my $class = ref $self
249 30 66 if exists $$self{$attribute}
252 41 25 if (ref $default eq 'CODE') { }
0 25 elsif (ref $default eq 'HASH') { }
0 25 elsif (ref $default eq 'ARRAY') { }
276 21 58 if (my $required = $required_attributes{$class})
284 18 3 unless (caller($i) =~ /^Tangram::/)
287 8 34 unless exists $$self{$attribute}
290 6 12 if @missing
308 1 20 if exists $passed{$field}
338 0 86 unless UNIVERSAL::isa($self, 'Class::Tangram')
340 0 86 unless exists $check{$class}
341 0 86 if scalar @_ & 1
348 1 146 unless $self->can($setter) or $self->can('AUTOLOAD')
367 0 0 unless @_
368 0 0 unless UNIVERSAL::isa($self, 'Class::Tangram')
371 0 0 unless exists $check{$class}
378 0 0 unless $self->can($getter) or $self->can('AUTOLOAD')
381 0 0 if ($multiget) { }
472 2 0 is_key($_) ? :
477 2 0 is_key($_) ? :
497 0 13 if $t and $t =~ /^Tangram/
511 0 15 if $t and $t =~ /^Tangram/
513 0 15 if (@_) { }
517 0 0 if (defined $key)
518 0 0 if (defined(my $n = ish_int($key))) { }
521 0 0 if $^W
529 0 0 if (wantarray or @rv > 1) { }
535 7 8 if (wantarray) { }
553 0 112 if $t and $t =~ /^Tangram/
555 2 110 if (@_) { }
561 3 0 if (defined $key and @members)
565 1 1 if (wantarray or @rv > 1) { }
571 30 80 if (wantarray) { }
589 0 11 if $t and $t =~ /^Tangram/
591 2 9 if (@_) { }
595 2 0 if (defined $key)
599 0 2 if (wantarray or @rv > 1) { }
605 0 9 if (wantarray) { }
649 19 1 if (blessed $value) { }
650 0 19 if ($value->isa('Set::Object')) { }
657 0 1 if ($ref eq 'ARRAY') { }
0 1 elsif ($ref eq 'HASH') { }
1 0 elsif (defined $value) { }
667 20 1 if (@ncc)
668 20 0 if (my $checkit = \$check{$class}{$X}) { }
672 0 0 if (@ncc > 1)
673 0 0 if $^W
678 0 0 unless ref $ncc[0]
686 6 14 if ($companion and refaddr($$self{$X}) != refaddr $old)
691 0 1 if $old and $old->can($remove) and $old->can($includes) and $old->$includes($self)
696 2 3 if $chosen and $chosen->can($insert) and $chosen->can($includes) and not $chosen->$includes($self)
716 25 36 if (@_ == 1 and not $companion and UNIVERSAL::isa($_[0], 'Set::Object'))
718 25 0 if (my $checkit = \$check{$class}{$X})
729 81 3 if (blessed $value) { }
730 46 35 if ($value->isa('Set::Object')) { }
737 2 1 if ($ref eq 'ARRAY') { }
1 0 elsif ($ref eq 'HASH') { }
0 0 elsif (defined ish_int($value)) { }
751 59 9 if ($companion)
754 31 28 $$self{$X} ? :
759 68 0 if (my $checkit = \$check{$class}{$X})
765 59 9 if ($companion)
773 9 50 if ($gone->size)
776 5 2 if ($gonner->can($remove_func) and $gonner->can($includes_func) and $gonner->$includes_func($self))
784 23 36 if ($added->size)
787 15 7 if ($new_mate->can($insert_func) and $new_mate->can($includes_func) and not $new_mate->$includes_func($self))
809 0 6 if (@_ == 1 and not $companion and ref $_[0] eq 'ARRAY')
811 0 0 if (my $checkit = \$check{$class}{$X})
821 7 1 if (blessed $value) { }
822 0 7 if ($value->isa('Set::Object')) { }
829 1 0 if ($ref eq 'ARRAY') { }
0 0 elsif ($ref eq 'HASH') { }
0 0 elsif (defined ish_int($value)) { }
843 7 0 if ($companion)
847 0 7 blessed($$self{$X}) ? :
852 7 0 if (my $checkit = $check{$class}{$X}) { }
861 7 0 if ($companion)
869 0 7 if ($gone->size)
872 0 0 if ($gonner->can($remove_func) and $gonner->can($includes_func) and $gonner->$includes_func($self))
880 7 0 if ($new->size)
883 1 6 if ($new_mate->can($insert_func) and $new_mate->can($includes_func) and not $new_mate->$includes_func($self))
905 0 1 if (@_ == 1 and not $companion and ref $_[0] eq 'HASH')
907 0 0 if (my $checkit = \$check{$class}{$X})
918 3 1 if (blessed $item and $item->can(my $meth = "${X}_hek")) { }
928 4 3 if (blessed $value) { }
929 0 4 if ($value->isa('Set::Object')) { }
936 0 3 if ($ref) { }
0 3 elsif (defined ish_int($value)) { }
937 0 0 if ($ref eq 'ARRAY') { }
0 0 elsif ($ref eq 'HASH') { }
956 3 0 if (my $checkit = \$check{$class}{$X})
962 2 1 if ($companion)
974 0 2 if ($gone->size)
977 0 0 if ($gonner->can($remove_func) and $gonner->can($includes_func) and $gonner->$includes_func($self))
985 1 1 if ($new->size)
988 3 0 if ($new_mate->can($insert_func) and $new_mate->can($includes_func) and not $new_mate->$includes_func($self))
1016 42 0 if (blessed($item = shift()) or reftype $item) { }
0 0 elsif (defined(my $x = ish_int($item))) { }
1017 19 23 unless $a->includes($item)
1019 0 0 if $x > $a->size
1023 19 23 unless $all_there
1035 5 0 if (blessed(my $item = shift())) { }
0 0 elsif (defined(my $x = ish_int($item))) { }
1036 3 2 unless refaddr($self->$getter) == refaddr $item
1039 0 0 if $x
1041 3 2 unless $all_there
1055 7 0 if (blessed(my $item = shift())) { }
0 0 elsif (defined(my $x = ish_int($item))) { }
1058 5 2 unless $members->includes($item)
1060 0 0 unless $x >= 0 and $x < @$a
1061 0 0 if (blessed($_[0]))
1063 0 0 unless refaddr($$a[$x]) == refaddr $item
1066 5 2 unless $all_there
1080 4 0 if (blessed(my $item = shift())) { }
0 0 elsif (defined(my $x = ish_int($item))) { }
0 0 elsif (not ref $item) { }
1083 0 4 unless $members->includes($item)
1089 0 0 unless exists $$a{$item}
1090 0 0 if (blessed($_[0]))
1093 0 0 unless refaddr($$a{$key}) == refaddr $item
1096 0 4 unless $all_there
1149 6 0 if (blessed $value) { }
1150 0 6 if ($value->isa('Set::Object')) { }
1157 0 0 if ($ref eq 'ARRAY') { }
0 0 elsif ($ref eq 'HASH') { }
0 0 elsif (defined ish_int($value)) { }
1261 0 0 $self->$getter ? :
1343 0 0 if (wantarray) { }
1359 0 0 if (my $val = $self->$getter(0)) { }
1364 0 0 wantarray ? :
1384 0 0 if defined $key
1423 0 0 if (wantarray) { }
1439 0 0 if (wantarray) { }
1469 0 16 $_->isa('Set::Object') ? :
0 0 ref $_ eq 'ARRAY' ? :
0 0 ref $_ eq 'HASH' ? :
16 0 blessed $_ ? :
1510 0 0 if (blessed $item) { }
0 0 elsif (defined ish_int($item)) { }
1512 0 0 if refaddr $item == refaddr($new[$i])
1519 0 0 unless $gone{$i}
1536 0 0 if (blessed $item) { }
0 0 elsif (blessed($_[0])) { }
1538 0 0 if refaddr $item == refaddr $v
1544 0 0 if defined ish_int($item)
1663 1 85 if length ${$_[0];} > 255
1675 1 8 unless is_int ${$_[0];} or ${$_[0];} + 0 eq ${$_[0];}
1694 1 6 unless is_double ${$_[0];} or is_int ${$_[0];} or ${$_[0];} =~ /$real_re/
1707 1 19 unless blessed ${$_[0];} or not ${$_[0];}
1720 0 3 if ref ${$_[0];} ne 'ARRAY'
1721 0 0 ref $_ ? :
1722 0 3 if map {ref $_ ? '1' : ();} @${$_[0];}
1737 1 1 unless ${$_[0];} =~ /$rawdate_re/o
1750 1 1 unless ${$_[0];} =~ /$rawtime_re/o
1772 2 7 unless ${$_[0];} =~ /$rawdatetime_re/o
1785 1 1 unless ${$_[0];} =~ /^\d{10}:\d\d:\d\d$|$rawdatetime_re/o or Date::Manip::ParseDate(${$_[0];})
1798 0 3 unless ref ${$_[0];} eq 'HASH'
1800 0 0 if ref $k or ref $v
1813 0 93 unless UNIVERSAL::isa(${$_[0];}, 'Set::Object')
1824 0 3 unless reftype ${$_[0];} eq 'HASH'
1835 0 7 unless reftype ${$_[0];} eq 'ARRAY'
1872 1 0 unless defined $t and $t =~ /Tangram::CollOnDemand/
1889 0 34 if defined $t and $t =~ /Tangram::CollOnDemand/
1890 33 1 if (ref $$self{$attr} eq 'Set::Object')
1906 2 0 unless defined $t and $t =~ /Tangram::CollOnDemand/
1967 23 4 unless ($$option{'sql'})
1983 0 4 if ($$option{'sql'} =~ /^\s*(?:var)?char\s*\(\s*(\d+)\s*\)/xi) { }
0 4 elsif ($$option{'sql'} =~ /^\s*(?:tiny|long|medium)? (?:blob|text)/xi) { }
2 2 elsif (my($members) = $$option{'sql'} =~ /^\s*set\s*$Class::Tangram::sql_list/io) { }
2 0 elsif (my($values) = $$option{'sql'} =~ /^\s*enum\s*$Class::Tangram::sql_list/io) { }
1987 0 0 if length ${$_[0];} > $max_length
1999 0 0 $1 eq 'tiny' ? :
0 0 $1 ? :
2003 0 0 if ${$_[0];} and length ${$_[0];} > $max_length
2022 2 8 unless exists $members{lc $x}
2044 2 4 if not exists $values{lc ${$_[0];}}
2094 0 0 if ($@)
2120 0 70 unless exists $cleaners{$class}
2125 48 143 if (defined $cleaners{$class}{$k} and exists $$self{$k})
2154 0 1 unless exists $cleaners{$class}
2158 1 0 if (defined $cleaners{$class}{$k} and exists $$self{$k})
2282 11 33 if exists $abstract{$class}
2298 33 0 if (my(@stack) = grep((!/$class::CT/), @{"${class}::ISA";}))
2304 17 26 if (defined ${"${super}::schema";} or defined ${"${super}::fields";}) { }
2312 0 4 unless ($fields or @$bases)
2329 4 29 $abstract ? :
2333 33 0 if (defined $bases)
2334 0 33 unless ref $bases eq 'ARRAY'
2341 3 14 unless exists $check{$super}
2367 43 46 if (ref $v eq 'ARRAY')
2381 954 0 unless $target_pkg->can($accessor_name)
2389 0 33 if $@
2407 111 3 if (ref $options eq 'HASH' or UNIVERSAL::isa($options, 'Tangram::Type'))
2417 114 0 if (ref $def eq 'HASH')
2420 27 87 if ($$def{'parse'} and not $check_func && $cleaner)
2430 108 6 unless defined $default
2434 7 107 unless ($no_tangram or not defined $load)
2435 7 0 unless (exists $INC{$load})
2437 7 0 if $@
2442 0 114 unless ref $check_func eq 'CODE'
2448 0 111 if $^W and exists $types{$class}{$attribute} and not $dontcarp
2463 51 63 if ($type =~ /^i?(set|array|hash|ref)$/) { }
2477 63 51 unless ($is_assoc or $set_closure)
2481 27 36 if ($type eq 'string') { }
2486 122 10 if (defined $value and length $value) { }
4 6 elsif ($required) { }
6 0 elsif (defined $required) { }
2491 0 6 unless defined $value
2494 4 120 if $err
2504 49 0 if (defined $value) { }
0 0 elsif ($required) { }
0 0 elsif (defined $required) { }
2509 0 0 unless defined $value
2512 0 40 if $err
2521 6 108 if ($type =~ /^flat_(array|hash)$/)
2522 3 3 if ($1 eq 'hash') { }
2526 1 4 wantarray ? :
2533 1 4 wantarray ? :
2547 63 51 ref $get_closure ? :
2554 63 51 ref $set_closure ? :
2556 51 63 if ($is_assoc) { }
2575 0 24 if (@_ and looks_like_KVKV(@_)) { }
24 0 elsif (not @_ or looks_like_KK(@_)) { }
2576 0 0 if $^W
2593 0 33 if (@_) { }
2594 0 0 if $^W
2604 51 63 if defined $cleaner
2606 25 89 if defined $default
2608 3 111 if defined $required
2612 22 92 if defined $companion
2760 0 0 if (not defined $class) { }
2786 0 0 if $class eq 'Class::Tangram'
2788 0 0 unless exists $cleaners{$class}
2803 0 2 unless exists $init_defaults{$class}
2820 7 0 if ($@) { }