Branch Coverage

lib/XML/Compile/Translate/Reader.pm
Criterion Covered Total %
branch 360 502 71.7


line true false branch
47 0 3 unless defined $action
49 1 2 if (not ref $action) { }
1 1 elsif (ref $action eq 'CODE') { }
52 0 1 unless keys %{$class . '::';}
56 0 1 unless $class->can("fromXML")
69 0 1 unless $object->can("fromXML")
86 0 401 if (builtin::blessed($_[0]) and $_[0]->isa('XML::LibXML::Iterator')) { }
90 1 400 unless my $xml = "XML::Compile"->dataToXML($_[0])
92 0 400 if $xml->isa("XML::LibXML::Document")
99 0 332 unless (defined $data)
112 0 4 unless ref $attr and $attr->isa("XML::LibXML::Attr")
134 89 138 if (@pairs == 2)
139 64 7 $_[0] && $_[0]->currentType eq $take ? :
6 83 ref $action eq 'BLOCK' || ref $action eq 'ANY' ? :
150 296 46 ref $do eq 'BLOCK' || ref $do eq 'ANY' || defined $tree && $tree->currentType eq $take ? :
165 12 79 if ref $do{$el} eq "BLOCK" or ref $do{$el} eq "ANY"
168 4 36 if (keys %do == 1 and not @specials)
172 4 0 defined $tree ? :
173 3 1 if $type eq $option
177 0 1 unless $@
179 1 0 unless $type
191 37 0 defined $tree ? :
192 37 0 defined $type ? :
193 33 4 if $elem
199 1 8 unless $@
203 1 2 unless $type
209 26 10 unless @specials
213 10 0 defined $tree ? :
214 10 0 defined $type ? :
215 4 6 if $elem
220 6 0 if not $@ and @d
221 0 0 if $@
226 0 0 unless $@
230 0 0 unless $type
235 0 0 if @elems
248 3 77 if ref $pairs{$el} eq "BLOCK" or ref $pairs{$el} eq "ANY"
251 5 25 if (not %specials and keys %pairs == 1)
255 3 1 $tree && $tree->currentType eq $take ? :
264 21 46 unless my $type = $tree && $tree->currentType
265 1 45 unless my $do = delete $do{$type}
274 22 3 unless keys %specials
285 2 9 unless my $type = $tree->currentType
286 6 3 if (my $do = delete $do{$type})
292 0 3 if $spseen{$_}
294 1 2 if $@
303 0 3 unless @res
310 2 1 if ($spseen{$_}) { }
321 276 31 if ($max ne "unbounded" and $max == 1)
323 271 5 if $min == 1
326 0 5 unless my $tree = shift()
327 1 4 unless my $starter = $tree->currentChild
329 2 2 if ($@->wasFatal('class', 'misfit')) { }
0 2 elsif ($@) { }
331 1 1 if not $ending or $ending != $starter
340 0 31 if ($max ne "unbounded" and $min >= $max)
353 18 13 if ($min == 0)
355 0 18 unless my $tree = shift()
358 11 35 unless my $starter = $tree->currentChild
360 3 32 if ($@->wasFatal('class', 'misfit')) { }
0 32 elsif ($@) { }
364 0 3 if not $ending or $ending != $starter
369 3 29 unless @pairs
373 14 4 @res ? :
379 0 11 unless my $tree = shift()
390 6 14 unless my $starter = $tree->currentChild
392 0 14 if ($@->wasFatal('class', 'misfit')) { }
0 14 elsif ($@) { }
396 0 0 if not $ending or $ending != $starter
401 1 13 unless @pairs
412 1 531 if $max eq 0
414 504 27 if ($max ne "unbounded" and $max == 1)
417 346 40 defined $tree ? :
418 342 8 if defined $tree
421 30 53 unless my $tree = shift()
422 0 53 unless $tree->currentChild
425 0 52 unless @pairs
427 433 71 $min == 1 ? :
430 2 25 if ($max ne "unbounded" and $min >= $max)
435 4 0 defined $tree ? :
437 3 0 if defined $tree
439 1 0 @res ? :
443 22 3 unless (defined $required)
445 6 16 unless my $tree = shift()
448 10 40 unless $tree->currentChild
450 6 34 unless @pairs
454 16 0 @res ? :
461 3 0 defined $tree ? :
463 3 0 if defined $tree
466 1 3 unless $tree->currentChild
468 1 2 unless @pairs
483 32 356 unless @pairs
487 0 439 ref $do eq 'BLOCK' ? :
495 0 0 if defined $tree and $tree->nodeType eq $childname and $tree->node->hasAttribute("href")
507 835 39 defined $tree && $tree->nodeType eq $childname ? :
509 763 38 defined $value ? :
519 0 2 unless my $tree = shift()
520 0 2 if $tree->nodeType ne $childname or $tree->node->textContent eq ""
523 2 17 if $mode eq "IGNORE"
530 1 7 if not defined $tree or $tree->nodeType ne $childname or $tree->node->textContent eq ""
536 14 3 if $mode eq "EXTEND"
540 0 3 unless my $tree = shift()
541 0 3 if $tree->nodeType ne $childname or $tree->node->textContent eq ""
544 1 2 if defined $v and $v eq $def
546 3 0 if $mode eq "MINIMAL"
556 2 1 $tree && $tree->nodeType eq $childname ? :
559 1 2 unless defined $value
562 0 2 unless $value eq $fix
573 1 2 unless my $tree = shift()
574 0 2 unless $tree->nodeType eq $childname
604 0 10 unless my $tree = shift()
606 5 5 $tree->nodeNil ? :
611 0 10 if $tree->currentChild
615 6 263 if $is_nillable
618 1 62 unless my $tree = shift()
625 0 58 if $tree->currentChild
629 58 205 if @elems > 1 or @attrs
632 0 9 unless my $tree = shift()
633 0 9 if $tree->currentChild
637 11 194 unless @elems
640 0 190 unless my $tree = shift()
643 4 157 if $tree->currentChild
659 1 10 $is_nillable && ref $tree && $tree->nodeNil ? :
660 1 10 unless ref $tree
663 10 0 defined $simple || @pairs ? :
675 0 6 unless my $mixed = $self->{'mixed_elements'}
677 0 6 if $is_nillable
681 0 1 unless my $tree = shift()
682 0 1 unless my $node = $tree->node
684 1 0 @v ? :
688 1 0 $_[0] ? :
691 0 2 unless my $tree = shift()
698 0 1 unless my $tree = shift()
705 0 1 unless my $tree = shift()
706 0 1 unless my $node = $tree->node
709 0 0 $mixed eq 'STRUCTURAL' ? :
1 0 $mixed eq 'XML_STRING' ? :
1 1 $mixed eq 'TEXTUAL' ? :
2 2 $mixed eq 'ATTRIBUTES' ? :
1 4 $mixed eq 'XML_NODE' ? :
1 5 if (ref $mixed eq 'CODE') { }
726 9 5 ref $tree && $tree->nodeNil ? :
727 14 0 defined $value ? :
730 532 36 defined $value ? :
731 14 649 $is_nillable ? :
737 0 1 unless ref $node
738 0 1 &first(sub { UNIVERSAL::isa($_, 'XML::LibXML::Element'); } , $node->childNodes) ? :
745 8 799 if ($type =~ /}anyType$/)
747 1 7 if (my $a = $self->{'any_type'}) { }
749 1 0 ref $_[0] && UNIVERSAL::isa($_[0], 'XML::Compile::Iterator') ? :
756 0 7 unless ref $_[0]
757 5 2 UNIVERSAL::isa($_[0], 'XML::Compile::Iterator') ? :
760 1 6 &first(sub { UNIVERSAL::isa($_, 'XML::LibXML::Element'); } , $node->childNodes) ? :
765 799 0 $check_values ? :
767 1 798 $path eq $type ? :
773 576 101 ref $_[0] ? :
774 37 640 unless defined $value
775 628 12 if &$check($value)
779 0 0 ref $_[0] ? :
780 0 0 unless defined $value
781 0 0 if &$check($value)
787 7 6 ref $_[0] ? :
788 0 13 unless defined $value
791 48 9 if (ref $_[0]) { }
792 705 0 defined $parse ? :
10 84 defined $parse ? :
705 94 if ($check) { }
798 25 2 ref $tree ? :
0 27 UNIVERSAL::isa($tree, 'XML::LibXML::Node') ? :
801 25 2 ref $tree ? :
816 7 4 unless @e
818 0 4 unless defined $_[0]
819 4 0 ref $_[0] ? :
829 1 93 unless @$early or @$late
831 79 14 unless (@$early)
834 0 72 unless defined $v
842 12 0 if (@$early)
843 0 12 unless defined $v
855 23 16 unless $@
856 2 1 ref $tree ? :
858 0 3 if length $text > 50
869 1 11 unless defined $node
873 0 11 unless defined $node
875 11 0 defined $value ? :
882 2 1 unless defined $node
892 22 72 unless defined $node
894 70 0 defined $val ? :
905 2 1 defined $node ? :
2 5 if $mode eq "IGNORE"
912 2 2 $node ? :
913 3 2 if $mode eq "EXTEND"
918 2 1 $node ? :
919 2 1 !defined($v) || $v eq $def ? :
920 2 0 if $mode eq "MINIMAL"
929 1 4 unless my $node = $_[0]->getAttributeNodeNS($ns, $tag)
933 1 3 unless defined $value and $value eq $def
945 0 10 unless keys %do
949 17 0 $tree ? :
0 17 unless my $type = $tree ? $tree->currentType : undef
953 4 13 unless my $do = $do{$type}
955 0 12 unless @subst
966 1 4 unless defined $handler
968 3 1 unless $yes
969 1 3 unless $no
975 8 8 unless $attr->isa("XML::LibXML::Attr")
977 1 7 if keys %yes and not $yes{$ns}
978 1 1 if keys %no and $no{$ns}
996 1 1 if defined $label
999 0 1 ref $handler ne 'CODE' ? :
3 1 $handler eq 'TAKE_ALL' ? :
1010 3 2 unless $yes
1011 2 3 unless $no
1016 0 5 unless my $tree = shift()
1022 1 1 if keys %yes
1023 1 1 if keys %no
1031 0 5 unless $count >= $min
1038 0 0 unless my $tree = shift()
1039 0 0 unless my $child = $tree->currentChild
1042 0 0 unless !keys(%yes) || $yes{$ns} and not keys %no && $no{$ns}
1047 5 0 $max eq 'unbounded' || $max > 1 ? :
1066 0 0 if defined $label
1069 0 0 ref $handler ne 'CODE' ? :
1 0 $handler eq 'SKIP_ALL' ? :
4 1 $handler eq 'TAKE_ALL' ? :
1080 0 7 unless my $tree = shift()
1081 0 7 unless my $node = $tree->node
1084 6 1 if ($type) { }
1085 0 6 $type =~ /(.*?)\:(.*)/ ? :
1087 0 6 unless $code = $types->{$alt}
1096 1 6 unless defined $t
1098 0 6 if ref $d ne "HASH"
1108 0 8 unless $before or $replace or $after
1111 1 10 if $replace and grep(($_ eq "SKIP"), @$replace)
1113 0 10 $replace ? :
1114 3 7 $before ? :
1115 10 0 $after ? :
1120 0 10 unless my $tree = shift()
1124 0 3 unless defined $xml
1128 0 10 @replace ? :
1132 0 10 unless @h
1133 0 10 @h == 1 ? :
1136 0 13 unless defined $h
1144 3 0 if ref $call eq "CODE"
1147 0 0 $call eq 'PRINT_PATH' ? :
1152 0 0 if ref $call eq "CODE"
1155 0 0 $call eq 'XML_NODE' ? :
1192 7 6 if ref $call eq "CODE"
1196 0 6 unless my $dec = $after{$call}
1223 6 0 $class eq 'ref' ? :
2 6 $class eq 'complexType' ? :
2 8 $class eq 'simpleType' ? :
9 10 if ($class eq 'anyType') { }