Branch Coverage

lib/BarefootJS/Evaluator.pm
Criterion Covered Total %
branch 24 324 7.4


line true false branch
44 0 0 unless ref $node eq "HASH"
47 0 0 if ($kind eq "literal")
50 0 0 if ($kind eq "identifier")
53 0 0 if ($kind eq "binary")
57 0 0 if ($kind eq "unary")
60 0 0 if ($kind eq "logical")
63 0 0 if ($op eq "&&")
64 0 0 _truthy($left) ? :
66 0 0 if ($op eq "||")
67 0 0 _truthy($left) ? :
70 0 0 defined $left ? :
72 0 0 if ($kind eq "conditional")
75 0 0 _truthy(evaluate($node->{'test'}, $env)) ? :
77 0 0 if ($kind eq "member")
80 0 0 if ($kind eq "index-access")
83 0 0 if ($kind eq "call")
91 0 0 if (defined $method)
95 0 0 unless defined $name and $name ne ""
99 0 0 if ($kind eq "template-literal")
102 0 0 if (($p->{'type'} // '') eq 'string') { }
111 0 0 if ($kind eq "array-literal")
114 0 0 if ($kind eq "object-literal")
121 0 0 if ($kind eq "array-method" and ($node->{'method'} // "") eq "includes" and @{$node->{'args'} // [];} == 1)
132 0 0 if (ref $obj eq "ARRAY")
134 0 0 if _same_value_zero($el, $needle)
138 0 0 if (_is_string($obj))
145 0 0 if ($kind eq "array-method" and ($node->{'method'} // "") eq "join" and @{$node->{'args'} // [];} <= 1)
156 0 0 @$args == 1 ? :
183 0 0 unless ref $callee eq "HASH" and ($callee->{'kind'} // "") eq "member"
184 0 0 if $callee->{'computed'}
186 0 0 unless $prop eq "map" or $prop eq "filter"
188 0 0 unless @$args
190 0 0 unless ref $arrow eq "HASH" and ($arrow->{'kind'} // "") eq "arrow"
203 0 0 unless ref $arr eq "ARRAY"
209 0 0 if @params >= 1
210 0 0 if @params >= 2
213 0 0 if ($method eq "map")
226 0 0 if _truthy(&$call_cb($item, $i))
239 0 0 unless ref $obj eq "ARRAY"
240 0 0 defined $_ ? :
260 0 50 if not defined $v or ref $v
262 36 14 $f & 1024 && !($f & 768) ? :
266 14 29 defined $v && !ref($v) && !_is_string($v) ? :
279 0 0 unless defined $v
280 0 0 $v ? :
0 0 if (ref $v eq "JSON::PP::Boolean")
281 0 0 if ref $v
282 0 0 if (_is_string($v))
286 0 0 if $t eq ""
287 0 0 &looks_like_number($t) ? :
293 0 0 unless defined $v
294 0 0 $v ? :
0 0 if (ref $v eq "JSON::PP::Boolean")
300 0 0 if (_is_number($v))
302 0 0 if $n != $n
303 0 0 if $n == "Inf"
304 0 0 if $n == "-Inf"
310 0 0 unless defined $v
311 0 0 $v ? :
0 0 if (ref $v eq "JSON::PP::Boolean")
312 0 0 if ref $v
313 0 0 $v ne '' ? :
0 0 if (_is_string($v))
315 0 0 $n != 0 && $n == $n ? :
323 0 0 $t ? :
330 0 0 if ($op eq "+")
333 0 0 if _is_string($l) or _is_string($r)
336 0 0 if $op eq "-"
337 0 0 if $op eq "*"
338 0 0 if ($op eq "/")
345 0 0 if ($rn == 0)
346 0 0 if $ln == 0 or $ln != $ln
347 0 0 $ln > 0 ? :
351 0 0 if ($op eq "%")
353 0 0 if $rn == 0
356 0 0 if $op eq "<" or $op eq "<=" or $op eq ">" or $op eq ">="
357 0 0 if $op eq "==="
358 0 0 if $op eq "!=="
367 0 0 if (_is_string($l) and _is_string($r)) { }
368 0 0 $l gt $r ? :
0 0 $l lt $r ? :
373 0 0 if $ln != $ln or $rn != $rn
374 0 0 $ln > $rn ? :
0 0 $ln < $rn ? :
376 0 0 if $op eq "<"
377 0 0 if $op eq "<="
378 0 0 if $op eq ">"
379 0 0 if $op eq ">="
387 3 10 if ($ln and $rn)
389 0 3 if $lf != $lf or $rf != $rf
390 2 1 $lf == $rf ? :
392 1 9 if $ln != $rn
393 1 0 !defined($r) ? :
1 8 unless (defined $l)
394 2 6 unless defined $r
397 0 6 if ($lb or $rb)
398 0 0 unless $lb and $rb
399 0 0 (!!$l) == !!$r ? :
401 2 4 $l eq $r ? :
6 0 if _is_string($l) and _is_string($r)
411 3 10 if (_is_number($l) and _is_number($r))
413 0 3 if $lf != $lf and $rf != $rf
419 0 0 if $op eq "!"
420 0 0 if $op eq "-"
421 0 0 if $op eq "+"
433 0 0 unless ref $callee eq "HASH"
435 0 0 if ($kind eq "identifier")
438 0 0 if ($kind eq "member" and not $callee->{'computed'})
440 0 0 unless ref $obj eq "HASH" and ($obj->{'kind'} // "") eq "identifier"
453 0 0 if ($name eq "Math.max")
457 0 0 if $n != $n
458 0 0 if $n > $m
462 0 0 if ($name eq "Math.min")
466 0 0 if $n != $n
467 0 0 if $n < $m
471 0 0 if $name eq "Math.abs"
472 0 0 if $name eq "Math.floor"
473 0 0 if $name eq "Math.ceil"
474 0 0 if $name eq "Math.round"
475 0 0 if $name eq "String"
476 0 0 if $name eq "Number"
477 0 0 if $name eq "Boolean"
487 0 0 unless defined $obj
488 0 0 if (ref $obj eq "HASH")
489 0 0 exists $obj->{$key} ? :
491 0 0 if (ref $obj eq "ARRAY")
492 0 0 $key eq 'length' ? :
494 0 0 if ref $obj
499 0 0 if $key eq "length" and _is_string($obj)
504 0 0 if (ref $obj eq "ARRAY")
507 0 0 if $i != $f or $i < 0 or $i >= @$obj
510 0 0 if (ref $obj eq "HASH")
531 0 0 ref $items eq 'ARRAY' ? :
532 0 0 if ($direction // "") eq "right"
535 0 0 $base_env ? :
557 0 0 unless ref $items eq "ARRAY"
558 0 0 $base_env ? :
573 0 0 $c > 0 ? :
0 0 $c < 0 ? :
0 0 unless $c < 0 ? -1 : ($c > 0 ? 1 : 0)
604 0 0 unless ref $items eq "ARRAY"
605 0 0 $base_env ? :
609 0 0 if _truthy(evaluate($pred, \%env))
617 0 0 ref $items eq 'ARRAY' ? :
618 0 0 $base_env ? :
621 0 0 unless _truthy(evaluate($pred, \%env))
628 0 0 ref $items eq 'ARRAY' ? :
629 0 0 $base_env ? :
632 0 0 if _truthy(evaluate($pred, \%env))
640 0 0 ref $items eq 'ARRAY' ? :
641 0 0 unless $forward
642 0 0 $base_env ? :
645 0 0 if _truthy(evaluate($pred, \%env))
653 0 0 ref $items eq 'ARRAY' ? :
654 0 0 $base_env ? :
655 0 0 $forward ? :
658 0 0 if _truthy(evaluate($pred, \%env))
669 0 0 ref $items eq 'ARRAY' ? :
670 0 0 $base_env ? :
675 0 0 if (ref $v eq 'ARRAY') { }
686 0 0 ref $items eq 'ARRAY' ? :
687 0 0 $base_env ? :