Branch Coverage

blib/lib/VSO.pm
Criterion Covered Total %
branch 100 144 69.4


line true false branch
36 4 22 if $caller eq 'VSO'
41 20 2 if $class eq 'VSO'
43 0 22 if $args{'extends'} and not ref $args{'extends'}
50 0 22 if @{$args{'extends'};}
60 0 27 if $s->can('BUILD')
80 0 51 if ($$props{'weak_ref'}) { }
97 4 57 if ($$props{'required'} and not defined $value and not $$props{'default'}) { }
2 107 elsif ($$props{'default'} and not defined $value) { }
104 0 2 if ($$props{'lazy'}) { }
117 0 52 if ($$props{'where'} and defined $value)
120 0 0 unless $$props{'where'}($s)
138 9 53 if $isa =~ /^(.+?)\[(.+?)\]/
144 0 62 if ($current_type eq 'Undef')
146 0 0 unless ($$props{'required'} and defined $original_value)
154 21 41 if ($wanted_type eq 'Any' or $current_type->isa($wanted_type)) { }
14 27 elsif (my $can_coerce = $$props{'coerce'} && exists $$_coercions{$wanted_type}{$current_type}) { }
18 9 elsif (eval { do { $wanted_type->as eq $current_type } }) { }
156 21 0 if (my $ref = $wanted_type->can('where')) { }
159 21 0 if ($wanted_type->where($s))
174 14 0 $can_coerce ? :
176 14 0 if ($coercion) { }
189 17 1 if ($wanted_type->where($s))
200 3 52 unless ($is_ok)
227 0 4 unless my $parent_meta = $_->meta
245 0 6 unless exists $$meta{'fields'}{$name} or $class->can($name)
248 2 4 if (exists $$meta{'fields'}{$name}) { }
273 0 6 unless exists $$meta{'fields'}{$name} or $class->can($name)
276 2 4 if (exists $$meta{'fields'}{$name}) { }
287 2 2 wantarray ? :
4 2 defined wantarray ? :
289 2 2 $context eq 'scalar' ? :
2 4 $context eq 'list' ? :
291 2 2 $context eq 'scalar' ? :
2 4 $context eq 'list' ? :
309 6 26 if (my($reftype, $valtype) = $type =~ /^((?:Hash|Array)Ref)\[(.+?)\]$/) { }
311 0 6 unless 'VSO::Subtype'->find($valtype)
314 6 0 unless ('VSO::Subtype'->subtype_exists($type))
321 0 26 unless 'VSO::Subtype'->find($type)
341 18 5 unless (@_)
344 0 18 if (not defined $$s{$name} and $$props{'default'})
346 0 0 if ($$props{'weak_ref'}) { }
359 1 4 if ($$props{'is'} eq 'ro') { }
4 0 elsif ($$props{'is'} eq 'rw') { }
370 1 2 if (my $triggers = $$meta{'triggers'}{"before.$name"})
378 0 3 if ($$props{'weak_ref'}) { }
387 1 2 if (my $triggers = $$meta{'triggers'}{"after.$name"})
395 2 1 if defined wantarray
413 0 2 unless @$vals
420 0 7 unless @$vals
424 2 4 $reftype eq 'ArrayRef' ? :
432 39 89 if (my $ref = ref $val) { }
434 0 39 if $ref eq 'SCALAR'
435 4 35 if $ref eq 'ARRAY'
436 14 21 if $ref eq 'HASH'
437 8 13 if $ref eq 'CODE'
438 0 13 if $ref eq 'GLOB'
439 0 13 if $ref eq 'Regexp'
440 0 13 if openhandle $val
446 0 89 unless defined $val
447 0 89 if $val =~ /^(?:0|1)$/
448 14 75 if $val =~ /^\d+$/
449 0 75 if $val =~ /^\d+\.?\d*?$/
452 0 75 if exists $INC{$fn}
473 0 4 unless defined @{"${class}::ISA";} or $INC{$file}
0 4 unless eval { do { require $file unless defined @{"${class}::ISA";} or $INC{$file}; 1 } }
484 6 183 if $args{'name'} =~ /^.+?\[.+?\]$/
487 0 189 if $VSO::Subtype::types{$args{'name'}}
490 0 189 if $args{'as'} =~ /^.+?\[.+?\]$/
511 0 182 if $VSO::Subtype::types{$name}
530 0 10 if defined $$_coercions{$to}{$args{'from'}}
548 1 8 if $_ eq $val
603 0 0 unless not defined $_