Branch Coverage

blib/lib/JSON/Path/Evaluator.pm
Criterion Covered Total %
branch 163 214 76.1


line true false branch
59 0 114 ref $_[0] eq 'HASH' ? :
62 0 228 unless $args{$key}
69 5 83 $self->{'expression'} =~ /\$_/ ? :
26 88 $args{'script_engine'} ? :
79 57 57 unless (ref $json_object)
91 112 2 wantarray ? :
107 114 0 if $token_stream->[0] eq $JSON::Path::Evaluator::TOKEN_ROOT
108 95 19 if $token_stream->[0] eq $JSON::Path::Evaluator::TOKEN_CHILD
110 11 103 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 492 unless ref $obj
164 492 0 defined $token_stream ? :
167 147 781 if $token eq $JSON::Path::Evaluator::TOKEN_CURRENT
168 289 492 if $token eq $JSON::Path::Evaluator::TOKEN_CHILD
170 30 462 if ($token eq $JSON::Path::Evaluator::TOKEN_FILTER_OPEN) { }
16 446 elsif ($token eq $JSON::Path::Evaluator::TOKEN_RECURSIVE) { }
174 0 30 if $ASSERT_ENABLE
179 11 19 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 383 if ($token eq $JSON::Path::Evaluator::TOKEN_SUBSCRIPT_OPEN) { }
211 0 63 if $ASSERT_ENABLE
217 431 15 if $index ne $JSON::Path::Evaluator::TOKEN_ALL
218 0 446 if $ASSERT_ENABLE
221 280 166 if (not @{$token_stream;}) { }
222 44 236 $want_ref ? :
235 64 6 if ($self->{'script_engine'} eq 'PseudoJS') { }
6 0 elsif ($self->{'script_engine'} eq 'perl') { }
256 0 610 if $ASSERT_ENABLE
263 23 587 if (ref $object eq 'REF')
267 15 595 if ($index eq $JSON::Path::Evaluator::TOKEN_ALL) { }
268 1 14 if (_hashlike($object)) { }
277 9 586 if ($index =~ /$JSON::Path::Evaluator::TOKEN_ARRAY_SLICE/) { }
5 581 elsif ($index =~ /$JSON::Path::Evaluator::TOKEN_UNION/) { }
278 0 9 _hashlike($object) ? :
288 463 132 if (_hashlike($object)) { }
289 84 379 if ($create_key) { }
295 357 23 if exists $object->{$index}
302 18 114 if ($create_key) { }
308 105 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
496 27 63 if (_hashlike($object)) { }
61 2 elsif (_arraylike($object)) { }
509 61 82 if _compare($operator, $val, $rhs)
513 34 15 if $val == @expressions_and
527 23 67 if ($expression =~ /$JSON::Path::Evaluator::EQUAL_SIGN/) { }
529 12 11 if (substr($expression, $position + 1, 1) eq $JSON::Path::Evaluator::EQUAL_SIGN) { }
530 0 12 if (substr($expression, $position + 2, 1) eq $JSON::Path::Evaluator::EQUAL_SIGN) { }
539 9 2 if ($preceding_char eq $JSON::Path::Evaluator::GREATER_THAN_SIGN) { }
0 2 elsif ($preceding_char eq $JSON::Path::Evaluator::LESS_THAN_SIGN) { }
0 2 elsif ($preceding_char eq $JSON::Path::Evaluator::EXCLAMATION_MARK) { }
556 317 121 if /$JSON::Path::Evaluator::EQUAL_SIGN/
557 65 56 if ($expression =~ /$_/)
566 88 2 if ($operator) { }
596 2 4 if (_hashlike($object)) { }
600 0 10 if $@
601 2 8 if $ret
608 0 15 if $@
609 7 8 if $ret
619 7 136 if ($operator eq $OPERATOR_IS_TRUE)
620 3 4 $lhs ? :
625 27 105 if ($operator eq '=' or $operator eq '==' or $operator eq '===')
626 8 23 $use_numeric ? :
628 18 87 if ($operator eq '<')
629 18 0 $use_numeric ? :
631 69 18 if ($operator eq '>')
632 41 28 $use_numeric ? :
634 0 18 if ($operator eq '<=')
635 0 0 $use_numeric ? :
637 18 0 if ($operator eq '>=')
638 12 6 $use_numeric ? :
640 0 0 if ($operator eq '!=' or $operator eq '!==')
641 0 0 $use_numeric ? :