Branch Coverage

blib/lib/Object/Proto/Sugar.pm
Criterion Covered Total %
branch 121 142 85.2


line true false branch
54 1 26 if grep {$_ eq "-role";} @import
56 0 27 if (grep {$_ eq "-types";} @import)
59 2 25 if (grep {$_ eq "-constants";} @import)
64 3 5 if $name =~ /^-/
65 0 5 if ($name =~ /^[A-Z]/) { }
67 0 0 unless $valid_types{$name}
71 0 5 unless $valid_constants{$name}
79 3 74 if (ref $name) { }
93 2 24 ref $attr[0] eq 'ARRAY' ? :
96 1 3 $#sp < 1 ? :
4 7 if ref $sp[-1] eq "HASH" and exists $sp[-1]{'default'}
97 10 16 unless not $sp[0] && ref $sp[0] and ($sp[0] || '') =~ /^(ro|rw|set)$/
100 1 21 ref $sp[1] eq 'CODE' ? :
22 4 if defined $sp[1]
101 7 19 if ref $sp[2] eq "HASH"
148 4 23 @extends ? :
0 27 @extends > 1 ? :
153 1 26 if ($is_role) { }
155 1 0 if @requires
159 1 26 if @with
166 4 23 if (@func_names)
178 1 2 if (@names) { }
185 1 0 if (defined &{"${pkg}::$name";})
197 0 3 $name =~ /::/ ? :
207 0 6 if $seen{$pkg}++
217 108 5 if (defined $spec->{'is'})
218 54 54 if ($spec->{'is'} eq "ro")
228 1 112 if ($spec->{'required'})
236 9 104 if ($spec->{'lazy'})
245 49 64 if (defined $spec->{'isa'} or defined $spec->{'coerce'})
247 5 44 if ($ref eq 'CODE' or defined $spec->{'coerce'}) { }
44 0 elsif (not $ref) { }
248 2 3 exists $spec->{'isa'} ? :
249 3 2 exists $spec->{'coerce'} ? :
250 4 1 unless ($$isa{$val1 . $val2}++)
259 44 0 if ($valid_types{$val1})
273 39 13 unless exists $spec->{'default'} or exists $spec->{'builder'}
275 64 10 if (exists $spec->{'builder'} or $ref1 eq 'CODE') { }
7 3 elsif (not $ref1) { }
2 1 elsif ($ref1 eq 'ARRAY') { }
1 0 elsif ($ref1 eq 'HASH') { }
277 6 58 if (not $ref2 and $ref1 ne 'CODE') { }
58 0 elsif ($ref2 eq 'CODE' or $ref1 eq 'CODE') { }
278 6 0 if ($spec->{'builder'} =~ /^1$/) { }
284 7 51 exists $spec->{'builder'} ? :
286 50 8 unless ($isa->{$val1}++)
295 6 1 defined $spec->{'default'} ? :
307 2 111 if (exists $spec->{'trigger'})
309 0 2 if (not $ref) { }
2 0 elsif ($ref eq 'CODE') { }
313 1 1 unless ($isa->{$val1}++)
326 3 110 if (defined $spec->{'predicate'})
327 2 1 if ($spec->{'predicate'} =~ /1/) { }
1 0 elsif (not ref $spec->{'predicate'}) { }
340 5 108 if (defined $spec->{'clearer'})
341 4 1 if ($spec->{'clearer'} =~ /1/) { }
1 0 elsif (not ref $spec->{'clearer'}) { }
355 3 110 if (exists $spec->{'reader'})
356 0 3 if ref $spec->{'reader'}
357 2 1 if ($spec->{'reader'} =~ /^1$/) { }
363 3 110 if (exists $spec->{'writer'})
364 0 3 if ref $spec->{'writer'}
365 2 1 if ($spec->{'writer'} =~ /^1$/) { }
376 2 111 if (defined $spec->{'init_arg'} or defined $spec->{'arg'})
384 1 112 if ($spec->{'weak_ref'} or $spec->{'weak'})
393 5 108 if (exists $spec->{'accessor'})
394 4 1 $spec->{'accessor'} eq '1' ? :
398 3 110 if (exists $spec->{'reader'} and not ref $spec->{'reader'})
399 2 1 $spec->{'reader'} eq '1' ? :
403 3 110 if (exists $spec->{'writer'} and not ref $spec->{'writer'})
404 2 1 $spec->{'writer'} eq '1' ? :