Branch Coverage

lib/HTML/Object/XPath.pm
Criterion Covered Total %
branch 100 166 60.2


line true false branch
74 0 10 unless $self->SUPER::init(@_)
99 0 0 unless defined $self
101 0 0 scalar @nodeset ? :
116 52 13 if ($self->_is_a($results, 'HTML::Object::XPath::NodeSet')) { }
133 32 0 if ($self->_is_a($results, 'HTML::Object::XPath::NodeSet')) { }
135 32 0 wantarray ? :
140 0 0 wantarray ? :
152 0 0 if ($self->_is_a($results, 'HTML::Object::XPath::NodeSet')) { }
0 0 elsif ($self->_is_a($results, 'HTML::Object::XPath::Boolean')) { }
0 0 elsif ($self->_is_a($results, 'HTML::Object::XPath::Node')) { }
177 0 0 if ($self->_is_a($results, 'HTML::Object::XPath::NodeSet')) { }
0 0 elsif ($self->_is_a($results, 'HTML::Object::XPath::Boolean')) { }
0 0 elsif ($self->_is_a($results, 'HTML::Object::XPath::Node')) { }
201 18 13 if ($self->_is_a($results, "HTML::Object::XPath::NodeSet"))
214 2 0 if ($self->_is_a($results, "HTML::Object::XPath::NodeSet"))
229 0 0 $self->{'uses_namespaces'} ? :
0 0 $node ? :
246 1 2 if grep {"$node" eq "$_";} @nodes
300 0 56 if ($self->debug)
311 0 25 if ($$tokens[$self->{'_tokpos'}] eq ")")
328 0 807 if $@
470 0 120 if ($self->debug)
490 57 91 if ($test =~ m[^(//?|\.\.?)$]) { }
22 69 elsif ($self->_is_step($tokens)) { }
505 10 59 if ($self->_match($tokens, qr"//?"))
509 3 7 if ($self->{'_curr_match'} eq "//")
528 26 43 if ($self->_match($tokens, $HTML::Object::XPath::LITERAL_RE)) { }
3 40 elsif ($self->_match($tokens, qr/$HTML::Object::XPath::REGEXP_RE$HTML::Object::XPath::REGEXP_MOD_RE?/)) { }
12 28 elsif ($self->_match($tokens, $HTML::Object::XPath::NUMBER_RE)) { }
3 25 elsif ($self->_match($tokens, qr/\(/)) { }
0 25 elsif ($self->_match($tokens, qr/\$$HTML::Object::XPath::QNAME_RE/)) { }
25 0 elsif ($self->_match($tokens, $HTML::Object::XPath::QNAME_RE)) { }
541 0 3 if ($mod)
610 0 148 if ($self->_match($tokens, qr/-/)) { }
655 0 96 unless defined $token
658 27 69 if ($token eq 'processing-instruction' or $token =~ /^\@($HTML::Object::XPath::NC_WILD_RE|$HTML::Object::XPath::QNAME_RE|$HTML::Object::XPath::QN_WILD_RE)$/o or $token =~ /^($HTML::Object::XPath::NC_WILD_RE|$HTML::Object::XPath::QNAME_RE|$HTML::Object::XPath::QN_WILD_RE)$/o and ($$tokens[$self->{'_tokpos'} + 1] || '') ne '(' or $token =~ /^$HTML::Object::XPath::NODE_TYPE_RE$/o or $token =~ /^$HTML::Object::XPath::AXIS_NAME_RE($HTML::Object::XPath::NC_WILD_RE|$HTML::Object::XPath::QNAME_RE|$HTML::Object::XPath::QN_WILD_RE|$HTML::Object::XPath::NODE_TYPE_RE)$/o) { }
679 5 74 if ($self->_match($tokens, qr"/")) { }
43 31 elsif ($self->_match($tokens, qr"//")) { }
685 5 0 if ($self->_is_step($tokens))
696 19 24 if (not $optimised) { }
726 561 1825 unless $self->{'_tokpos'} < scalar @$tokens
730 339 1486 if ($$tokens[$self->{'_tokpos'}] =~ /^$match$/) { }
738 0 1486 if ($fatal) { }
757 18 32 if ($$tokens[$tokpos + 1] and $$tokens[$tokpos + 1] eq '[') { }
0 32 elsif ($tokens->[$tokpos] =~ /^\.\.?$/) { }
770 1 31 if ($step->axis ne "child")
793 12 56 if $HTML::Object::XPath::CACHE->{$context}
801 0 56 if ($self->{'_tokpos'} < $tokens->length)
813 0 56 if ($self->debug)
828 7 16 if ($self->{'_curr_match'} eq "//")
831 0 7 if (not $optimised) { }
841 7 16 if (@steps > 1 and $steps[-1]->axis eq "self" and $steps[-1]->test == $self->_class_for("Step")->TEST_NT_NODE)
858 40 104 if ($self->_match($tokens, qr/\./)) { }
1 103 elsif ($self->_match($tokens, qr/\.\./)) { }
874 0 103 if ($token eq 'processing-instruction') { }
32 71 elsif ($token =~ /^\@($HTML::Object::XPath::NC_WILD_RE|$HTML::Object::XPath::QNAME_RE|$HTML::Object::XPath::QN_WILD_RE)$/o) { }
0 71 elsif ($token =~ /^($HTML::Object::XPath::NC_NAME_RE):\*$/o) { }
11 60 elsif ($token =~ /^$HTML::Object::XPath::QN_WILD_RE$/o) { }
53 7 elsif ($token =~ /^$HTML::Object::XPath::QNAME_RE$/o) { }
0 7 elsif ($token eq 'comment()') { }
0 7 elsif ($token eq 'text()') { }
0 7 elsif ($token eq 'node()') { }
0 7 elsif ($token eq 'processing-instruction()') { }
7 0 elsif ($token =~ /^$HTML::Object::XPath::AXIS_NAME_RE($HTML::Object::XPath::NC_WILD_RE|$HTML::Object::XPath::QNAME_RE|$HTML::Object::XPath::QN_WILD_RE|$HTML::Object::XPath::NODE_TYPE_RE)$/o) { }
890 3 29 if ($token eq '@*') { }
0 29 elsif ($token =~ /^\@($HTML::Object::XPath::NC_NAME_RE):\*$/o) { }
29 0 elsif ($token =~ /^\@($HTML::Object::XPath::QNAME_RE)$/o) { }
982 0 7 if ($token eq 'processing-instruction') { }
0 7 elsif ($token =~ /^($HTML::Object::XPath::NC_NAME_RE):\*$/o) { }
1 6 elsif ($token =~ /^$HTML::Object::XPath::QN_WILD_RE$/o) { }
6 0 elsif ($token =~ /^$HTML::Object::XPath::QNAME_RE$/o) { }
0 0 elsif ($token eq 'comment()') { }
0 0 elsif ($token eq 'text()') { }
0 0 elsif ($token eq 'node()') { }
0 0 elsif ($token eq 'processing-instruction()') { }
997 0 0 $axis eq 'attribute' ? :
1009 0 1 $axis eq 'attribute' ? :
1021 0 6 $axis eq 'attribute' ? :
1092 3 519 if ($expected eq 'RE' and $path =~ /\G\s*($HTML::Object::XPath::REGEXP_RE $HTML::Object::XPath::REGEXP_MOD_RE?)\s*/cgosx) { }
463 56 elsif ($path =~ m{\G
1122 3 460 $token =~ /^[=!]~$/ ? :
1130 410 56 if (length $token)
1137 0 56 if (pos $path < length $path)