Branch Coverage

blib/lib/JQ/Lite/Expression.pm
Criterion Covered Total %
branch 88 144 61.1


line true false branch
22 0 62 unless defined $expr
24 27 35 unless my $tokens = _tokenize($expr)
31 6 29 if ($@)
32 6 0 if $@ =~ /\Q$PARSE_ERROR\E/
37 0 29 unless $next->{'type'} eq "EOF"
51 23 6 if ($@)
52 16 7 if $@ =~ /\Q$PARSE_ERROR\E/
69 67 159 if ($char =~ /\s/)
74 33 126 if ($char =~ m[[+\-*/%]])
80 2 124 if ($char eq "(")
86 2 122 if ($char eq ")")
92 0 122 if ($char eq ",")
98 52 70 if ($char eq ".")
100 0 52 unless defined $consumed
102 6 46 if (not defined $path or $path eq '') { }
111 1 69 if ($char eq "\"")
113 0 1 unless defined $consumed
119 0 69 if ($char eq "'")
121 0 0 unless defined $consumed
127 14 55 if (substr($expr, $i) =~ /\G(-?\d+(?:\.\d+)?)/)
135 28 27 if (substr($expr, $i) =~ /\G([A-Za-z_][A-Za-z0-9_]*)/)
160 42 200 if $depth == 0 and $char =~ m[[+\-*/%(),\s]]
162 0 200 if ($char eq '[') { }
0 200 elsif ($char eq ']') { }
166 0 0 if $depth
188 0 8 if ($escaped)
194 0 8 if ($char eq "\\")
200 1 7 if ($char eq "\"")
203 0 1 unless defined $decoded and not $@
224 0 0 if ($escaped)
231 0 0 if ($char eq "\\")
237 0 0 if ($char eq "'")
259 0 58 unless my $token = _next($state)
264 0 68 unless $next
266 1 67 if ($next->{'type'} eq "LPAREN" and _is_callable($lhs))
269 1 0 if (_peek($state)->{'type'} ne "RPAREN")
277 0 1 unless $closing->{'type'} eq "RPAREN"
286 46 21 unless $next->{'type'} eq "OP"
289 0 21 if $lbp < $min_bp
307 11 47 if ($token->{'type'} eq "NUMBER")
311 0 47 if ($token->{'type'} eq "STRING")
315 0 47 if ($token->{'type'} eq "CURRENT")
319 23 24 if ($token->{'type'} eq "PATH")
323 17 7 if ($token->{'type'} eq "IDENT")
324 0 17 if ($token->{'value'} eq "true")
327 0 17 if ($token->{'value'} eq "false")
330 0 17 if ($token->{'value'} eq "null")
336 0 7 if ($token->{'type'} eq "OP" and $token->{'value'} eq "-")
341 1 6 if ($token->{'type'} eq "LPAREN")
344 0 1 unless $closing->{'type'} eq "RPAREN"
373 11 49 if ($node->{'type'} eq "NUMBER")
377 0 49 if ($node->{'type'} eq "STRING")
381 0 49 if ($node->{'type'} eq "BOOLEAN")
385 0 49 if ($node->{'type'} eq "NULL")
389 0 49 if ($node->{'type'} eq "CURRENT")
393 17 32 if ($node->{'type'} eq "PATH")
397 0 32 if ($node->{'type'} eq "UNARY")
403 15 17 if ($node->{'type'} eq "BINARY")
410 3 12 if ($node->{'op'} eq "+")
413 0 12 if ($node->{'op'} eq "-")
416 2 10 if ($node->{'op'} eq "*")
419 10 0 if ($node->{'op'} eq "/")
420 7 3 if $right_num == 0
423 0 0 if ($node->{'op'} eq "%")
424 0 0 if $right_num == 0
429 1 16 if ($node->{'type'} eq "CALL")
432 0 1 unless $func
445 0 0 unless defined $value
447 0 0 if (ref $value eq "JSON::PP::Boolean")
448 0 0 $value ? :
451 0 0 if ref $value
452 0 0 unless &looks_like_number($value)