Branch Coverage

blib/lib/Attean/Plan.pm
Criterion Covered Total %
branch 31 600 5.1


line true false branch
76 7 33 if (ref $t eq 'ARRAY') { }
33 0 elsif ($t->does('Attean::API::TermOrVariable')) { }
78 7 0 if (scalar @tstrings == 1) { }
100 0 0 if (&reftype($value) eq 'ARRAY') { }
0 0 elsif ($value->does('Attean::API::Variable')) { }
104 0 0 if (my $node = $b->value($name)) { }
113 0 0 if (my $node = $b->value($name))
149 0 1 if ($self->left) { }
0 1 elsif ($self->anti) { }
169 0 0 unless (&all(sub {
193 0 2 if ($anti and scalar @shared == 0)
197 2 0 if (my $j = $l->join($r))
199 0 2 if ($left) { }
0 2 elsif ($anti) { }
208 0 2 if ($left and not $seen) { }
0 4 elsif ($anti and not $seen) { }
236 0 622 if ($self->anti)
246 0 1 if ($self->left) { }
266 0 0 unless (&all(sub {
290 0 0 unless (defined $value)
295 0 0 if ($has_unbound_right_join_var) { }
302 0 0 ref $_ ? :
315 0 0 unless (defined $value)
322 0 0 if (my $b = $hash{''})
326 0 0 if ($has_unbound_left_join_var) { }
327 0 0 ref $_ ? :
329 0 0 if ($key =~ /^$pattern$/u)
334 0 0 ref $_ ? :
335 0 0 if (my $rows = $hash{$key})
342 0 0 if (my $j = $l->join($r))
344 0 0 if ($left) { }
353 0 0 if ($left and not $seen)
392 0 1 if (exists $args{'in_scope_variables'})
411 0 0 unless (&all(sub {
433 0 0 if (scalar @buffer)
440 0 0 if ($t)
444 0 0 if (scalar @buffer)
491 0 0 unless (&all(sub {
517 0 1 if (scalar @buffer)
523 1 0 if ($value->does("Attean::API::Term"))
527 1 0 if (scalar @buffer)
576 0 0 unless &blessed($term) and $term->does("Attean::API::Term")
592 0 0 unless &blessed($term) and $term->does("Attean::API::Term")
656 0 0 unless (do {
671 0 0 if (my $current = shift @children) { }
679 0 0 if ($row) { }
683 0 0 if ($current) { }
740 0 10 if (exists $args{'in_scope_variables'})
752 0 0 unless $expr->can("operator")
760 0 0 if ($expr->isa('Attean::CastExpression')) { }
0 0 elsif ($expr->isa('Attean::ValueExpression')) { }
0 0 elsif ($expr->isa('Attean::UnaryExpression')) { }
0 0 elsif ($expr->isa('Attean::BinaryExpression')) { }
0 0 elsif ($expr->isa('Attean::FunctionExpression')) { }
0 0 elsif ($expr->isa('Attean::ExistsPlanExpression')) { }
765 0 0 if ($datatype =~ m[^http://www.w3.org/2001/XMLSchema#string$]u)
767 0 0 if ($term->does('Attean::API::IRI')) { }
0 0 elsif ($term->datatype->value eq 'http://www.w3.org/2001/XMLSchema#boolean') { }
0 0 elsif ($term->does('Attean::API::NumericLiteral')) { }
770 0 0 $value eq 'true' || $value eq '1' ? :
774 0 0 if ($v == int $v)
782 0 0 unless &blessed($term) and $term->does("Attean::API::Literal")
783 0 0 if ($datatype =~ m[^http://www.w3.org/2001/XMLSchema#(integer|float|double|decimal)]u) { }
0 0 elsif ($datatype =~ m[^http://www.w3.org/2001/XMLSchema#boolean$]u) { }
0 0 elsif ($datatype =~ m[^http://www.w3.org/2001/XMLSchema#dateTime$]u) { }
786 0 0 if ($datatype eq 'http://www.w3.org/2001/XMLSchema#integer') { }
0 0 elsif ($datatype eq 'http://www.w3.org/2001/XMLSchema#decimal') { }
0 0 elsif ($datatype =~ m[^http://www.w3.org/2001/XMLSchema#(float|double)$]u) { }
787 0 0 if ($term->datatype->value eq 'http://www.w3.org/2001/XMLSchema#boolean') { }
0 0 elsif ($term->does('Attean::API::NumericLiteral')) { }
0 0 elsif ($value =~ /^[-+]\d+$/u) { }
788 0 0 $value eq 'true' || $value eq '1' ? :
800 0 0 if ($term->datatype->value eq 'http://www.w3.org/2001/XMLSchema#boolean') { }
0 0 elsif ($term->does('Attean::API::NumericLiteral')) { }
0 0 elsif (&looks_like_number($value)) { }
801 0 0 $value eq 'true' ? :
805 0 0 if ($value =~ /[eE]/u)
815 0 0 if ($term->datatype->value eq 'http://www.w3.org/2001/XMLSchema#boolean') { }
0 0 elsif ($term->does('Attean::API::NumericLiteral')) { }
0 0 elsif (&looks_like_number($value)) { }
816 0 0 $value eq 'true' ? :
827 0 0 if (my $term = $c->canonicalized_term) { }
833 0 0 if ($term->does('Attean::API::NumericLiteral')) { }
835 0 0 $value == 0 ? :
838 0 0 if ($value =~ /^(true|false|0|1)$/u) { }
839 0 0 $value eq 'true' || $value eq '1' ? :
847 0 0 if ($c->does('Attean::API::DateTimeLiteral') and $c->datetime) { }
856 0 0 if ($node->does('Attean::API::Variable')) { }
864 0 0 if ($op eq '!') { }
0 0 elsif ($op eq '-' or $op eq '+') { }
865 0 0 $term->ebv ? :
867 0 0 unless &blessed($term) and $term->does("Attean::API::NumericLiteral")
874 0 0 if ($op eq '&&') { }
0 0 elsif ($op eq '||') { }
0 0 elsif ($op eq '=') { }
0 0 elsif ($op eq '!=') { }
0 0 elsif ($op =~ /[<>]=?/u) { }
0 0 elsif ($op =~ m[^[-+*/]$]u) { }
877 0 0 unless ($term->ebv)
885 0 0 if (&blessed($term) and $term->ebv)
892 0 0 $lhs->equals($rhs) ? :
895 0 0 !$lhs->equals($rhs) ? :
899 0 0 if ($cmp < 0) { }
0 0 elsif ($cmp > 0) { }
900 0 0 $op =~ /^<=?/u ? :
902 0 0 $op =~ /^>=?/u ? :
904 0 0 $op =~ /=/u ? :
908 0 0 if &blessed($_)
0 0 unless &all(sub {
911 0 0 if ($op eq '+') { }
0 0 elsif ($op eq '-') { }
0 0 elsif ($op eq '*') { }
0 0 elsif ($op eq '/') { }
926 0 0 if ($func eq 'IF') { }
0 0 elsif ($func eq 'COALESCE') { }
929 0 0 if $@
930 0 0 &blessed($term) && $term->ebv ? :
940 0 0 if (&blessed($term))
950 0 0 if ($func =~ /^IS([UI]RI|BLANK|LITERAL|NUMERIC|TRIPLE)$/u) { }
0 0 elsif ($func eq 'REGEX') { }
0 0 elsif ($func =~ /^(NOT)?IN$/u) { }
0 0 elsif ($func eq 'NOW') { }
0 0 elsif ($func eq 'STR') { }
0 0 elsif ($func =~ /^[UI]RI$/u) { }
0 0 elsif ($func eq 'ABS') { }
0 0 elsif ($func eq 'ROUND') { }
0 0 elsif ($func eq 'CEIL') { }
0 0 elsif ($func eq 'FLOOR') { }
0 0 elsif ($func eq 'CONCAT') { }
0 0 elsif ($func eq 'DATATYPE') { }
0 0 elsif ($func eq 'LANG') { }
0 0 elsif ($func eq 'LANGMATCHES') { }
0 0 elsif ($func eq 'ENCODE_FOR_URI') { }
0 0 elsif ($func =~ /^[LU]CASE$/u) { }
0 0 elsif ($func eq 'STRLANG') { }
0 0 elsif ($func eq 'STRDT') { }
0 0 elsif ($func eq 'REPLACE') { }
0 0 elsif ($func eq 'SUBSTR') { }
0 0 elsif ($func eq 'CONTAINS') { }
0 0 elsif ($func eq 'STRSTARTS') { }
0 0 elsif ($func eq 'STRENDS') { }
0 0 elsif ($func eq 'STRAFTER') { }
0 0 elsif ($func eq 'STRBEFORE') { }
0 0 elsif ($func eq 'STRLEN') { }
0 0 elsif ($func eq 'MD5') { }
0 0 elsif ($func =~ /^SHA(\d+)$/u) { }
0 0 elsif ($func eq 'RAND') { }
0 0 elsif ($func =~ /^(YEAR|MONTH|DAY|HOUR|MINUTE)S?$/u) { }
0 0 elsif ($func eq 'SECONDS') { }
0 0 elsif ($func eq 'TIMEZONE') { }
0 0 elsif ($func eq 'TZ') { }
0 0 elsif ($func eq 'UUID') { }
0 0 elsif ($func eq 'STRUUID') { }
0 0 elsif ($func eq 'BNODE') { }
0 0 elsif ($func eq 'SAMETERM') { }
0 0 elsif ($func =~ /^(SUBJECT|PREDICATE|OBJECT)$/u) { }
0 0 elsif ($func eq 'INVOKE') { }
954 0 0 $ok ? :
959 0 0 &blessed($_) ? :
961 0 0 if ($flags =~ /i/u) { }
966 0 0 $string =~ /$re/u ? :
968 0 0 $func eq 'IN' ? :
969 0 0 $func eq 'IN' ? :
976 0 0 if ($term->equals($value))
999 0 0 if ($value < 0)
1017 0 0 if (my $l = $strings[0]->language) { }
1021 0 0 if ($dt->value eq "")
1026 0 0 unless $s->does("Attean::API::Literal")
1027 0 0 if $s->datatype and not $s->datatype->value =~ m[http://www.w3.org/(1999/02/22-rdf-syntax-ns#langString|2001/XMLSchema#string)]u
1028 0 0 if (my $l2 = $s->language) { }
1029 0 0 if (my $l1 = $args{'language'})
1030 0 0 if ($l1 ne $l2)
1042 0 0 unless $string->does("Attean::API::Literal")
1046 0 0 unless $string->does("Attean::API::Literal")
1053 0 0 if ($match eq '*') { }
1055 0 0 $lang ? :
1057 0 0 I18N::LangTags::is_dialect_of($lang, $match) ? :
1065 0 0 $func eq 'LCASE' ? :
1069 0 0 unless $term->does("Attean::API::Literal")
1070 0 0 unless $term->datatype->value =~ m[http://www.w3.org/(1999/02/22-rdf-syntax-ns#langString|2001/XMLSchema#string)]u
1071 0 0 if $term->language
1075 0 0 unless $term->does("Attean::API::Literal")
1076 0 0 unless $term->datatype->value =~ m[http://www.w3.org/(1999/02/22-rdf-syntax-ns#langString|2001/XMLSchema#string)]u
1077 0 0 if $term->language
1082 0 0 unless $term->does("Attean::API::Literal")
1083 0 0 unless $term->language or $term->datatype->value =~ m[http://www.w3.org/(1999/02/22-rdf-syntax-ns#langString|2001/XMLSchema#string)]u
1088 0 0 if index($pattern, "(?{") != -1 or index($pattern, "(??{") != -1
1089 0 0 if index($replace, "(?{") != -1 or index($replace, "(??{") != -1
1109 0 0 scalar @nums > 1 ? :
1113 0 0 if ($term->has_language and $pattern->has_language)
1114 0 0 if ($term->literal_value_language ne $pattern->literal_value_language)
1120 0 0 $pos >= 0 ? :
1124 0 0 substr($string, 0, length $pat) eq $pat ? :
1128 0 0 substr($string, length($string) - length($pat)) eq $pat ? :
1131 0 0 unless $term->does("Attean::API::Literal")
1132 0 0 unless $term->language or $term->datatype->value eq "http://www.w3.org/2001/XMLSchema#string"
1133 0 0 unless $term->argument_compatible($pat)
1138 0 0 if ($i < 0) { }
1145 0 0 unless $term->does("Attean::API::Literal")
1146 0 0 unless $term->language or $term->datatype->value eq "http://www.w3.org/2001/XMLSchema#string"
1147 0 0 unless $term->argument_compatible($pat)
1152 0 0 if ($i < 0) { }
1185 0 0 if $tz->is_floating
1188 0 0 if ($offset < 0)
1194 0 0 if ($offset >= 3600)
1196 0 0 if $h > 0
1199 0 0 if ($offset >= 60)
1201 0 0 if $m > 0
1205 0 0 if $s > 0 or $duration eq "PT"
1212 0 0 if $tz->is_floating
1213 0 0 if $tz->is_utc
1218 0 0 if ($offset < 0)
1223 0 0 if ($offset >= 3600)
1227 0 0 if ($offset >= 60)
1239 0 0 if (scalar @{$expr->children;}) { }
1243 0 0 exists $r->eval_stash->{'sparql:bnode'}{$value} ? :
1253 0 0 unless &blessed($operands[0]) and &blessed($operands[1])
1254 0 0 if ($a->compare($b))
1257 0 0 if ($a->does('Attean::API::Binding')) { }
1259 0 0 $ok ? :
1262 0 0 $ok ? :
1273 0 0 unless (ref $func)
1287 0 0 if (my $row = $iter->next)
1292 0 0 $found ? :
1338 0 0 if (&blessed($term))
1340 0 0 if ($row{$var} and $term->as_string ne $row{$var}->as_string)
1344 0 0 if ($term->does("Attean::API::Binding"))
1445 0 0 if $self->limit >= 0
1446 0 0 if $self->offset > 0
1458 0 0 if $offset > 0
1459 0 0 if $limit >= 0
1483 0 10 if (exists $args{'in_scope_variables'})
1518 0 0 $t ? :
1535 2 0 $t ? :
1565 1 0 $ascending->{$_} ? :
1584 0 0 if (&blessed($av) and $av->does('Attean::API::Binding') and not defined $bv && $bv->does('Attean::API::Binding')) { }
0 0 elsif (&blessed($bv) and $bv->does('Attean::API::Binding') and not defined $av && $av->does('Attean::API::Binding')) { }
1589 0 0 $av ? :
1590 0 0 if ($@)
1594 0 0 unless $ascending
1595 0 0 unless $c == 0
1669 0 0 if $self->user_agent
1711 0 8 if (exists $args{'in_scope_variables'})
1761 1 0 if ($iter->isa("Attean::ListIterator"))
1774 3 1 if ($self->has_size_estimate)
1786 0 5 if (exists $args{'in_scope_variables'})
1800 1 0 if ($iter->does("Attean::API::RepeatableIterator"))
1844 0 0 if (exists $args{'in_scope_variables'})
1862 0 0 if (exists $$v{$x->as_string})
1866 0 0 unless ($binding)
1870 0 0 if ($skip) { }
1898 0 0 if ($_->does("Attean::API::Variable"))
1900 0 0 if (my $node = $bind->value($name))
1908 0 0 if ($s_var and $o_var) { }
0 0 elsif ($o_var) { }
0 0 elsif ($s_var) { }
1946 0 0 if (exists $seen{$object->as_string}) { }
1981 0 0 if (exists $args{'in_scope_variables'})
2005 0 0 if ($_->does("Attean::API::Variable"))
2007 0 0 if (my $node = $bind->value($name))
2017 0 0 if ($s_var and $o_var) { }
0 0 elsif ($s_var) { }
0 0 elsif ($o_var) { }
2027 0 0 if (0 == $subject->compare($object))
2039 0 0 unless ($seen{$r->as_string}++)
2044 0 0 unless $r
2045 0 0 if ($seen{$r->as_string}++)
2083 2 2 $iter->next ? :
2125 0 4 if (exists $args{'in_scope_variables'})
2141 0 0 if ($op eq 'COUNT') { }
0 0 elsif ($op eq 'SUM') { }
0 0 elsif ($op eq 'AVG') { }
0 0 elsif ($op eq 'SAMPLE') { }
0 0 elsif ($op =~ /^(MIN|MAX)$/u) { }
0 0 elsif ($op eq 'GROUP_CONCAT') { }
0 0 elsif ($op eq 'CUSTOM') { }
2144 0 0 if ($e) { }
2146 0 0 if ($term)
2160 0 0 if ($term->does("Attean::API::NumericLiteral"))
2178 0 0 unless $term->does("Attean::API::NumericLiteral")
2196 0 0 if &blessed($term)
2205 0 0 $op eq 'MIN' ? :
2218 0 0 unless ($data)
2246 0 0 if ($g->isa("Attean::ValueExpression"))
2248 0 0 if ($value->isa("Attean::Variable"))
2251 0 0 if (&blessed($value))
2264 0 0 &blessed($value) ? :
2273 0 0 if ($agg->operator eq "RANK")
2286 0 0 unless (exists $group_templates{$group_key})
2296 0 0 if (scalar @group_keys == 0 and scalar @groups == 0)
2304 0 0 if (defined $rank) { }
2321 0 0 if ($value)
2477 0 0 if (scalar @order)
2482 0 0 $q->does('Attean::API::QuadPattern') ? :
2483 0 0 if ($quad->is_ground) { }
2496 0 0 $q->does('Attean::API::QuadPattern') ? :
2497 0 0 if ($quad->is_ground) { }
2539 0 0 if ($resp->is_success)
2541 0 0 if (my $pclass = "Attean"->get_parser("media_type", $ct))
2550 0 0 if ($silent) { }