Branch Coverage

blib/lib/JSON/Path/Evaluator.pm
Criterion Covered Total %
branch 148 212 69.8


line true false branch
59 0 97 ref $_[0] eq 'HASH' ? :
62 0 194 unless $args{$key}
69 5 66 $self->{'expression'} =~ /\$_/ ? :
26 71 $args{'script_engine'} ? :
79 40 57 unless (ref $json_object)
91 95 2 wantarray ? :
107 97 0 if $token_stream->[0] eq $JSON::Path::Evaluator::TOKEN_ROOT
108 78 19 if $token_stream->[0] eq $JSON::Path::Evaluator::TOKEN_CHILD
110 11 86 if ($args{'want_path'})
116 9 8 ref ${$ref;} ? :
129 66 11 defined $base_path ? :
130 77 0 defined $json_object ? :
134 8 69 if (_arraylike($json_object)) { }
63 6 elsif (_hashlike($json_object)) { }
137 30 0 if (ref $json_object->[$_]) { }
148 36 198 if (ref $json_object->{$index}) { }
162 84 354 unless ref $obj
164 354 0 defined $token_stream ? :
167 61 539 if $token eq $JSON::Path::Evaluator::TOKEN_CURRENT
168 185 354 if $token eq $JSON::Path::Evaluator::TOKEN_CHILD
170 13 341 if ($token eq $JSON::Path::Evaluator::TOKEN_FILTER_OPEN) { }
16 325 elsif ($token eq $JSON::Path::Evaluator::TOKEN_RECURSIVE) { }
174 0 13 if $ASSERT_ENABLE
179 11 2 if (not @{$token_stream;}) { }
181 6 5 $want_ref ? :
191 2 14 if ($index eq $JSON::Path::Evaluator::TOKEN_FILTER_OPEN)
195 0 2 if $ASSERT_ENABLE
201 6 8 unless (@{$token_stream;})
208 63 262 if ($token eq $JSON::Path::Evaluator::TOKEN_SUBSCRIPT_OPEN) { }
211 0 63 if $ASSERT_ENABLE
217 310 15 if $index ne $JSON::Path::Evaluator::TOKEN_ALL
218 0 325 if $ASSERT_ENABLE
221 176 149 if (not @{$token_stream;}) { }
222 44 132 $want_ref ? :
235 47 6 if ($self->{'script_engine'} eq 'PseudoJS') { }
6 0 elsif ($self->{'script_engine'} eq 'perl') { }
256 0 471 if $ASSERT_ENABLE
263 5 466 if (ref $object eq 'REF')
267 15 456 if ($index eq $JSON::Path::Evaluator::TOKEN_ALL) { }
268 1 14 if (_hashlike($object)) { }
277 9 447 if ($index =~ /$JSON::Path::Evaluator::TOKEN_ARRAY_SLICE/) { }
5 442 elsif ($index =~ /$JSON::Path::Evaluator::TOKEN_UNION/) { }
278 0 9 _hashlike($object) ? :
288 342 114 if (_hashlike($object)) { }
289 84 258 if ($create_key) { }
295 236 23 if exists $object->{$index}
302 18 96 if ($create_key) { }
308 87 0 if exists $object->[$index]
320 11 2 _arraylike($object) ? :
27 13 _hashlike($object) ? :
337 0 0 unless defined $token
339 0 0 if ($token eq $JSON::Path::Evaluator::TOKEN_SUBSCRIPT_OPEN)
343 0 0 if ($token eq $JSON::Path::Evaluator::TOKEN_SUBSCRIPT_CLOSE)
350 0 0 if $ASSERT_ENABLE
352 0 0 if (grep {$_ eq $JSON::Path::Evaluator::TOKEN_ARRAY_SLICE;} @substream) { }
0 0 elsif (grep {$_ eq $JSON::Path::Evaluator::TOKEN_UNION;} @substream) { }
361 0 0 if ($substream[0] eq $JSON::Path::Evaluator::TOKEN_ARRAY_SLICE)
366 0 0 if ($substream[2] eq $JSON::Path::Evaluator::TOKEN_ARRAY_SLICE)
396 0 9 if (not defined $start or $start eq '')
399 6 3 if (not defined $end or $end eq '')
402 9 0 if (not defined $step or $step eq '')
406 6 3 if $start == -1
407 6 3 if $end == -1
410 0 9 if ($step < 0) { }
431 2 279 if (ref $obj eq 'REF')
435 82 199 if (_arraylike($obj)) { }
191 8 elsif (_hashlike($obj)) { }
436 0 0 if (&looks_like_number($index) and exists $obj->[$index])
437 0 0 $want_ref ? :
440 136 115 unless ref $obj->[$_]
445 16 175 if (exists $obj->{$index})
446 8 8 $want_ref ? :
449 439 152 unless ref $val
465 2 2 $want_ref ? :
472 84 38 unless ref $got
489 27 20 if (_hashlike($object)) { }
18 2 elsif (_arraylike($object)) { }
503 15 42 if _compare($operator, $val, $rhs)
516 2 45 if ($expression =~ /$JSON::Path::Evaluator::EQUAL_SIGN/) { }
518 2 0 if (substr($expression, $position + 1, 1) eq $JSON::Path::Evaluator::EQUAL_SIGN) { }
519 0 2 if (substr($expression, $position + 2, 1) eq $JSON::Path::Evaluator::EQUAL_SIGN) { }
528 0 0 if ($preceding_char eq $JSON::Path::Evaluator::GREATER_THAN_SIGN) { }
0 0 elsif ($preceding_char eq $JSON::Path::Evaluator::LESS_THAN_SIGN) { }
0 0 elsif ($preceding_char eq $JSON::Path::Evaluator::EXCLAMATION_MARK) { }
545 152 47 if /$JSON::Path::Evaluator::EQUAL_SIGN/
546 43 4 if ($expression =~ /$_/)
555 45 2 if ($operator) { }
585 2 4 if (_hashlike($object)) { }
589 0 10 if $@
590 2 8 if $ret
597 0 15 if $@
598 7 8 if $ret
608 7 50 if ($operator eq $OPERATOR_IS_TRUE)
609 3 4 $lhs ? :
614 7 43 if ($operator eq '=' or $operator eq '==' or $operator eq '===')
615 0 7 $use_numeric ? :
617 0 43 if ($operator eq '<')
618 0 0 $use_numeric ? :
620 43 0 if ($operator eq '>')
621 17 26 $use_numeric ? :
623 0 0 if ($operator eq '<=')
624 0 0 $use_numeric ? :
626 0 0 if ($operator eq '>=')
627 0 0 $use_numeric ? :
629 0 0 if ($operator eq '!=' or $operator eq '!==')
630 0 0 $use_numeric ? :