Branch Coverage

lib/XML/Compile/Translate/Writer.pm
Criterion Covered Total %
branch 298 458 65.0


line true false branch
45 59 73 length $prefix ? :
58 0 1 unless keys %{$class . '::';}
62 0 1 unless $class->can('toXML')
68 1 0 UNIVERSAL::isa($values, $class) ? :
75 0 1 unless $object->can('toXML')
81 1 0 &blessed($values) ? :
88 0 3 unless defined $action
90 1 2 if (not ref $action) { }
1 1 elsif (ref $action eq 'CODE') { }
97 1 0 &blessed($values) ? :
118 0 358 unless UNIVERSAL::isa($doc, 'XML::LibXML::Document')
132 55 0 if ref $filter ne 'CODE'
136 111 73 unless &$filter($entry->{'uri'}, $entry->{'prefix'}, $entry->{'used'})
141 1 54 unless @entries
144 0 52 unless my $node = &$processor(@_)
145 0 52 unless UNIVERSAL::isa($node, 'XML::LibXML::Element')
155 80 127 if (@pairs == 2)
163 0 69 unless defined $values
165 6 74 ref $do eq 'BLOCK' ? :
0 80 ref $do eq 'ANY' ? :
170 0 133 unless defined $values
179 5 272 ref $do eq 'ANY' ? :
26 277 ref $do eq 'BLOCK' ? :
190 12 77 if (ref $do eq 'BLOCK' or ref $do eq 'ANY') { }
195 2 36 if (not @specials and keys %do == 1)
200 2 0 defined $values && defined $values->{$take} ? :
206 0 43 unless defined $values
211 34 33 if defined $values->{$take}
218 0 6 if (my $f = $@->wasFatal('class', 'misfit')) { }
6 0 elsif (defined $@) { }
222 0 0 if $starter != keys %$values
234 1 4 if not $@ and @d
238 0 0 if ($@->wasFatal('class', 'misfit')) { }
0 0 elsif (defined $@) { }
239 0 0 if $starter != keys %$values
253 0 14 if (@pairs == 2 and not ref $pairs[1])
271 2 33 ref $do eq 'BLOCK' || ref $do eq 'ANY' ? :
284 1 451 if $max eq '0'
286 11 440 if ($min == 0 and $max eq 'unbounded')
289 0 3 defined $values ? :
9 3 ref $values eq 'ARRAY' ? :
291 9 3 @values ? :
295 0 440 if ($max eq 'unbounded')
298 0 0 defined $values ? :
0 0 ref $values eq 'ARRAY' ? :
302 0 0 @d ? :
306 55 37 @d ? :
307 88 352 if $min == 0 and $max == 1
309 341 11 if $min == 1 and $max == 1
315 0 3 defined $values ? :
9 3 ref $values eq 'ARRAY' ? :
317 0 12 unless @values <= $max
326 9 3 @d ? :
336 14 253 if ($min == 0 and $max eq 'unbounded')
339 14 0 $_[0] ? :
340 0 3 defined $values ? :
11 3 ref $values eq 'ARRAY' ? :
347 5 248 if ($max eq 'unbounded')
350 4 0 $_[0] ? :
351 0 0 defined $values ? :
4 0 ref $values eq 'ARRAY' ? :
354 0 4 unless @values >= $min
364 5 243 if ($min == 0 and $max == 1)
367 5 0 defined $values ? :
0 5 ref $values eq 'ARRAY' ? :
369 0 5 unless @values <= 1
375 0 5 unless @values
379 4 1 unless $@->wasFatal('class', 'misfit') and $starter == keys %$values
386 232 11 if ($min == 1 and $max == 1)
389 1 215 unless @d
400 0 3 defined $values ? :
7 3 ref $values eq 'ARRAY' ? :
403 3 7 unless @values >= $min and @values <= $max
418 287 8 if @nodes
420 0 8 if ref $do eq 'BLOCK'
427 0 344 if ref $do eq 'BLOCK'
433 731 36 defined $_[1] ? :
438 0 4 if ref $fixed
442 3 1 defined $value ? :
443 2 1 if defined $ret and $ret->textContent eq $fixed
446 0 1 unless defined $ret
462 8 6 defined $_[1] ? :
14 4 if $mode eq 'IGNORE'
465 1 1 defined $_[1] ? :
2 2 if $mode eq 'EXTEND'
468 1 1 defined $_[1] && $_[1] ne $default ? :
2 0 if $mode eq 'MINIMAL'
475 0 1 unless defined $_[1]
498 6 229 $is_nillable ? :
503 0 236 if $data eq 'NIL'
505 0 236 if UNIVERSAL::isa($data, 'XML::LibXML::Element')
508 0 236 unless (UNIVERSAL::isa($data, 'HASH'))
509 0 0 unless defined $data
519 5 231 $is_nillable && (delete $copy->{'_'} || '') eq 'NIL' ? :
530 3 218 if (%$copy)
532 0 3 defined $iut ? :
534 3 0 if (@not_used)
545 48 460 unless defined $child
546 460 0 if (ref $child) { }
547 0 460 if UNIVERSAL::isa($child, 'XML::LibXML::Text') and $child->data eq ''
551 0 0 unless length $child
569 1 8 $is_nillable ? :
573 0 9 if UNIVERSAL::isa($data, 'XML::LibXML::Element')
576 9 0 UNIVERSAL::isa($data, 'HASH') ? :
580 0 9 if (UNIVERSAL::isa($content, 'XML::LibXML::Node')) { }
1 8 elsif ($is_nillable and $content eq 'NIL') { }
8 0 elsif (defined $content) { }
597 0 9 if (my(@not_used) = sort(keys %$copy))
603 0 9 unless $node or @childs
608 8 0 defined $_ ? :
10 8 UNIVERSAL::isa($_, 'XML::LibXML::Node') ? :
621 0 1 $is_nillable ? :
625 1 0 if ($mixed eq 'ATTRIBUTES') { }
0 0 elsif ($mixed eq 'STRUCTURAL') { }
632 0 0 unless (@attrs or @anya)
635 0 0 ref $data eq 'HASH' ? :
636 0 0 if UNIVERSAL::isa($node, 'XML::LibXML::Element')
645 0 2 unless defined $data
647 1 1 if UNIVERSAL::isa($data, 'XML::LibXML::Element')
650 1 0 UNIVERSAL::isa($data, 'HASH') ? :
652 0 1 unless defined $content
656 1 0 if (&blessed($content) and $content->isa('XML::LibXML::Node')) { }
0 0 elsif ($is_nillable and $content eq 'NIL') { }
0 0 elsif ($content =~ /\<.*?\>|\&\w+\;/) { }
674 0 0 if ($node->localName ne $locname)
695 0 1 if (%$copy)
697 0 0 defined $iut ? :
699 0 0 if (my(@not_used) = sort(keys %$copy))
706 0 1 unless @childs
710 0 0 defined $_ ? :
1 0 ref $_ && $_->isa('XML::LibXML::Node') ? :
721 13 562 $is_nillable ? :
725 0 498 if UNIVERSAL::isa($data, 'XML::LibXML::Element')
728 1 497 if ref $data eq 'HASH'
730 10 488 $is_nillable && $data eq 'NIL' ? :
734 0 467 unless defined $value
738 0 467 if ref $value eq 'ARRAY' or ref $value eq 'HASH'
742 457 0 defined $value ? :
10 457 UNIVERSAL::isa($value, 'XML::LibXML::Node') ? :
751 705 0 $check_values ? :
752 1 704 $path eq $type ? :
761 22 504 unless defined $_[1]
763 492 11 if defined $value and &$check($value)
766 28 0 if not defined $_[1] or &$check($_[1])
771 6 0 defined $_[1] ? :
773 593 29 defined $format ? :
5 78 defined $format ? :
622 83 $check ? :
781 0 34 unless defined $v
782 17 17 ref $v eq 'ARRAY' ? :
792 0 12 unless defined $v
794 8 0 ref $v eq 'ARRAY' ? :
795 0 8 unless defined $list and length $list
803 1 86 unless @$early or @$late
805 0 74 unless defined $v
808 0 53 unless defined $v
817 0 25 unless defined $value
818 23 14 unless $@
820 0 2 if length $value > 50
829 0 8 unless keys %done
837 7 10 unless defined $subst
851 10 0 if defined $value
863 2 1 unless defined $value
873 62 17 defined $value ? :
884 1 2 defined $value ? :
885 3 4 if $mode eq 'IGNORE'
891 1 1 unless defined $value
893 2 2 if $mode eq 'EXTEND'
898 1 1 if defined $value and $value eq $default
900 2 0 if $mode eq 'MINIMAL'
907 6 0 if ref $fixed
910 1 4 unless defined $value
912 1 3 unless $value eq $fixed
924 8 0 defined $v ? :
6 8 ref $v eq 'ARRAY' ? :
928 0 14 unless UNIVERSAL::isa($node, 'XML::LibXML::Node')
932 12 2 if ($node->isa('XML::LibXML::Attr'))
937 2 0 if ($node->isa('XML::LibXML::Element'))
951 3 2 unless $yes
952 2 3 unless $no
963 10 0 if (substr($label, 0, 1) eq '{') { }
0 0 elsif (index($label, ':') >= 0) { }
970 0 0 $match ? :
975 3 7 if keys %yes
976 3 5 if keys %no
978 0 6 unless my $value = delete $values->{$label}
981 0 6 if @$elems
982 0 6 unless @$attrs
986 6 0 if $nodetype eq $type
1000 3 2 unless $yes
1001 2 3 unless $no
1013 10 7 if (substr($label, 0, 1) eq '{') { }
2 5 elsif (index($label, ':') >= 0) { }
1020 2 0 $match ? :
1025 4 8 if keys %yes
1026 4 6 if keys %no
1028 0 8 unless my $value = delete $values->{$label}
1031 6 2 if @$attrs
1032 6 2 unless @$elems
1036 0 2 unless defined $nodens
1039 2 0 if $nodetype eq $type
1046 0 2 unless $max eq 'unbounded' or @res <= $max
1052 0 5 unless @res >= $min
1056 2 3 @res ? :
1077 0 6 unless ref $values eq 'HASH' and $values->{'XSI_TYPE'}
1081 0 6 unless my $def = $types{$type}
1086 0 6 unless my $node = &$code($doc, \%v)
1095 0 3 unless $before or $replace or $after
1098 1 8 if ($replace)
1099 1 0 if grep(($_ eq 'SKIP'), @$replace)
1102 0 0 if @$replace > 1
1109 6 2 $before ? :
1110 5 3 $after ? :
1114 0 8 unless defined $val
1117 0 6 unless defined $val
1120 0 8 $do_replace ? :
1123 0 8 unless defined $xml
1127 0 5 unless defined $xml
1136 6 0 if ref $call eq 'CODE'
1140 0 0 $call eq 'PRINT_PATH' ? :
1145 0 0 if ref $call eq 'CODE'
1154 4 1 if ref $call eq 'CODE'
1157 1 0 $call eq 'PRINT_PATH' ? :
1180 6 0 $class eq 'ref' ? :
2 6 $class eq 'complexType' ? :
2 8 $class eq 'simpleType' ? :
9 10 $class eq 'anyType' ? :
1191 0 1 unless $type and $r and UNIVERSAL::isa($r, 'XML::LibXML::Element')
1192 0 1 if $r->getAttributeNS('http://www.w3.org/2001/XMLSchema-instance', 'type')