Branch Coverage

lib/Web/DataService/Node.pm
Criterion Covered Total %
branch 66 222 29.7


line true false branch
110 2 0 if (ref $item eq 'HASH') { }
0 0 elsif (not ref $item) { }
113 0 2 unless defined $item->{'path'} and $item->{'path'} ne ''
116 0 2 if $item->{'path'} ne '/' and $item->{'path'} =~ qr" ^ / | / $ | // | [?#] "sx
132 0 1 unless $last_node
153 0 2 if (defined $ds->{'path_defs'}{$path}) { }
176 0 6 unless $NODE_DEF{$key}
183 0 6 if (not defined $value or $value eq '') { }
3 3 elsif ($NODE_DEF{$key} eq 'single') { }
0 3 elsif ($NODE_DEF{$key} eq 'hook') { }
0 3 elsif ($NODE_DEF{$key} eq 'set') { }
1 2 elsif ($NODE_DEF{$key} eq 'list') { }
202 0 0 if (ref $value eq 'ARRAY') { }
206 0 0 unless ref $v eq 'CODE' or not ref $v
213 0 0 unless ref $value eq 'CODE' or not ref $value
229 0 0 unless ($value =~ qr/ ^ (?> [\w.:][\w.:-]* | \s*,\s* )* $ /sx or $value =~ qr/ ^ (?> [+-][\w.:][\w.:-]* | \s*,\s* )* $ /sx)
236 0 0 if $value =~ qr/ ^ (?> \s*,\s* )* [+-] /sx
244 0 1 unless ($value =~ qr/ ^ (?> [\w.:-]+ | \s*,\s* )+ $ /sx)
265 0 2 if (defined $place)
270 0 0 if ($place > 0 and defined $list and $list ne '') { }
0 0 elsif ($place ne '0') { }
290 0 2 if ($role and not $Web::DataService::ONE_REQUEST)
310 0 2 if ($role)
314 0 0 if $role =~ qr/ [.] pm $ /sx
318 0 0 unless %{"${role}::";}
326 0 2 if ($method)
328 0 0 unless defined $role
331 0 0 unless $role->can($method)
340 0 2 if $method
341 0 2 if $ds->node_attr($path, 'file_dir')
342 0 2 if $ds->node_attr($path, 'file_path')
344 0 2 if ($method and $attr_count > 1) { }
0 2 elsif ($attr_count > 1) { }
360 2 0 if (ref $allow_format and &reftype($allow_format) eq 'HASH')
365 0 4 unless ref $ds->{'format'}{$f}
377 2 0 if (ref $allow_vocab and &reftype($allow_vocab) eq 'HASH')
382 0 4 unless ref $ds->{'vocab'}{$v}
392 0 2 if (defined $place and not $place =~ qr/^[0-9]+$/)
426 0 0 if (ref $item eq 'HASH') { }
0 0 elsif (not ref $item) { }
429 0 0 unless defined $item->{'path'} and $item->{'path'} ne ''
432 0 0 if $item->{'path'} ne '/' and $item->{'path'} =~ qr" ^ / | / $ | // | [?#] "sx
448 0 0 unless $last_node
465 0 0 unless $NODE_DEF{$key}
471 0 0 unless defined $place and $place =~ qr/^[0-9]+$/
474 0 0 unless defined $list and $list ne ''
479 0 0 if $place
509 0 0 if (ref $item eq 'HASH') { }
0 0 elsif (not ref $item) { }
513 0 0 unless defined $item->{'path'} and $item->{'path'} ne '' or defined $item->{'type'} and $item->{'type'} ne ''
516 0 0 if $item->{'path'} ne '/' and $item->{'path'} =~ qr" ^ / | / $ | // | [?#] "sx
532 0 0 unless $last_node
551 0 0 unless $name
558 0 0 unless $EXTENDED_DEF{$key}
561 0 0 unless $disp eq '' or $disp eq 'replace' or $disp eq 'add' or $disp eq 'para'
564 0 0 if ($path) { }
0 0 elsif ($type eq 'format') { }
0 0 elsif ($type eq 'vocab') { }
567 0 0 if $item->{'name'}
569 0 0 if $type ne 'node'
573 0 0 unless ref $ds->{'node_attrs'}{$path} eq 'HASH'
576 0 0 if $disp
582 0 0 unless $name
586 0 0 unless ref $ds->{'format'}{$name} eq 'Web::DataService::Format'
589 0 0 if $disp
595 0 0 unless $name
599 0 0 unless ref $ds->{'format'}{$name} eq 'Web::DataService::Vocab'
602 0 0 if $disp
608 0 0 unless $type
611 0 0 if $type eq 'node'
614 0 0 unless $type eq 'node' or $type eq 'format' or $type eq 'vocab'
626 0 0 unless defined $doc
630 0 0 if ref $doc
642 0 0 unless defined $item->{'doc_string'}
643 0 0 if $item->{'doc_string'} ne ''
656 0 0 unless defined $path
657 0 0 if $path eq ''
676 0 19 if (ref $path and &reftype($path) eq 'HASH')
688 2 17 if (exists $ds->{'attr_cache'}{$path}{$key})
700 0 17 unless $key and defined $NODE_DEF{$key}
701 0 17 unless defined $path and $path ne ''
703 0 17 if $path eq ''
705 0 17 unless exists $ds->{'node_attrs'}{$path}
731 3 21 if ($NODE_NONHERITABLE{$key})
742 19 2 if (not exists $ds->{'node_attrs'}{$path}{$key} or $ds->{'path_compose'}{$path}{$key})
749 7 12 if (defined $parent) { }
761 0 12 if (defined $config_value) { }
0 12 elsif (defined $NODE_ATTR_DEFAULT{$key}) { }
0 12 elsif ($key eq 'allow_method') { }
2 10 elsif ($key eq 'allow_format') { }
2 8 elsif ($key eq 'allow_vocab') { }
799 19 0 unless (exists $ds->{'node_attrs'}{$path}{$key})
815 0 2 if ($NODE_DEF{$key} eq 'set') { }
1 1 elsif ($NODE_DEF{$key} eq 'list') { }
0 1 elsif ($NODE_DEF{$key} eq 'hook') { }
817 0 0 ref $inherited_value eq 'HASH' ? :
822 0 0 unless $v =~ /^([+-])?(.*)/
824 0 0 if (defined $1 and $1 eq '-') { }
846 1 0 if defined $v and $v ne ''
854 0 0 if (ref $inherited_value eq 'ARRAY' and @$inherited_value) { }
892 0 19 unless defined $path
893 17 2 if exists $ds->{'path_parent'}{$path}
897 1 1 if ($path eq '/' or $path eq '') { }
1 0 elsif ($path =~ qr" ^ [^/]+ $ "sx) { }
0 0 elsif ($path =~ qr" ^ (.+) / [^/]+ "sx) { }
927 0 3 unless defined $doc
929 0 3 if ref $doc
935 3 0 unless ($node->{'doc_string'})
937 0 3 if ($doc =~ qr/ ^ ! (.*) /sx)
951 3 0 unless defined $node->{'doc_string'}
952 0 3 if $node->{'doc_string'} ne '' and $doc ne ''