Branch Coverage

lib/JSON/LINQ.pm
Criterion Covered Total %
branch 247 394 62.6


line true false branch
21 0 11 if ($] < "5.006" and not defined &warnings::import)
23 0 11 if $INC[-1] eq "."
46 1 1 ${$_[0];} ? :
80 163 0 defined $_[0] ? :
84 0 163 if length $$r
92 0 802 unless length $$r
96 220 582 if ($c eq '{') { }
30 552 elsif ($c eq '[') { }
237 315 elsif ($c eq '"') { }
1 314 elsif ($$r =~ s/\Anull(?=[^a-zA-Z0-9_]|$)//s) { }
12 302 elsif ($$r =~ s/\Atrue(?=[^a-zA-Z0-9_]|$)//s) { }
6 296 elsif ($$r =~ s/\Afalse(?=[^a-zA-Z0-9_]|$)//s) { }
296 0 elsif ($$r =~ s/\A(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)//s) { }
115 0 220 if ($$r =~ s/\A\}//s)
118 0 552 unless $$r =~ /\A"/
122 0 552 unless $$r =~ s/\A://s
127 332 220 if ($$r =~ s/\A,//s) { }
220 0 elsif ($$r =~ s/\A\}//s) { }
139 0 30 if ($$r =~ s/\A\]//s)
143 57 30 if ($$r =~ s/\A,//s) { }
30 0 elsif ($$r =~ s/\A\]//s) { }
161 789 3346 if ($$r =~ s/\A"//s) { }
0 3346 elsif ($$r =~ s[\A\\(["\\/bfnrt])][]s) { }
0 3346 elsif ($$r =~ s/\A\\u([0-9a-fA-F]{4})//s) { }
3346 0 elsif ($$r =~ s/\A($utf8_pat)//s) { }
174 0 0 if $cp <= 127
175 0 0 if ($cp <= 2047)
190 0 77 unless defined $v
191 0 0 $$v ? :
0 77 if (ref $v eq "JSON::LINQ::Boolean")
192 0 77 if (ref $v eq "ARRAY")
193 21 56 if (ref $v eq "HASH")
199 36 20 if (not ref $v and $v =~ /\A-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?\z/s)
231 57 357 if (exists $self->{'_factory'})
245 102 0 if (ref $source eq "ARRAY")
248 93 364 if $i >= scalar @$source
274 33 134 $mode eq '>' ? :
275 0 167 unless open $fhn, $arg
276 111 56 if ($raw)
294 0 24 if $@
297 24 0 if (ref $data eq 'ARRAY') { }
0 0 elsif (ref $data eq 'HASH') { }
309 24 69 if $i >= scalar @$records
328 1 132 unless length $line
329 0 132 if $line =~ /\A\s*\z/
330 0 132 if $line =~ /\A\s*#/
333 0 132 if ($@)
349 0 7 if $@
352 6 1 if (ref $data eq 'ARRAY') { }
1 0 elsif (ref $data eq 'HASH') { }
364 7 19 if $i >= scalar @$records
379 0 176 unless defined $sep
385 2 505 if ($pos < $len and substr($line, $pos, 1) eq '"') { }
390 4 18 if ($c eq '"') { }
392 2 2 if ($pos < $len and substr($line, $pos, 1) eq '"') { }
406 0 2 if $pos < $len and substr($line, $pos, 1) eq $sep
423 0 126 unless defined $sep
424 1 125 unless defined $value
425 2 124 if ($value =~ /["\n\r]/ or index($value, $sep) != -1)
441 2 39 defined $opts{'sep'} ? :
448 39 2 if (not defined $headers) { }
451 39 0 if (defined $hdr)
457 1 1 if ($skip)
465 39 137 unless (defined $line)
470 0 137 if $line eq ""
496 8 81 unless length $line
499 222 0 /\A(.+?):(.*)\z/ ? :
502 81 0 if %record
517 1 5 if $remaining <= 0
539 0 0 if $remaining <= 0
557 9 19 if (@args == 1 and ref $args[0] eq 'CODE') { }
566 5 78 unless defined $row->{$k}
567 38 40 unless $row->{$k} eq $match{$k}
576 28 117 unless defined $item
577 61 56 if &$cond($item)
594 26 103 unless defined $item
609 10 8 if (@buffer)
614 2 6 unless defined $item
617 0 6 unless (ref $result eq "ARRAY")
635 13 8 unless ($first_done)
637 10 3 if (defined $item)
644 11 0 $second_iter ? :
661 0 0 unless defined $item1 and defined $item2
679 6 13 if $taken >= $count
681 0 13 unless defined $item
697 0 2 unless defined $item
712 0 0 if $done
714 0 0 unless defined $item
716 0 0 if (&$predicate($item)) { }
736 0 0 unless defined $item
738 0 0 if ($skipping) { }
739 0 0 unless (&$predicate($item))
838 0 27 unless defined $key
839 18 9 unless (exists $groups{$key})
871 6 31 unless defined $item
873 3 28 $key_selector ? :
874 0 31 unless defined $key
876 20 11 unless ($seen{$key}++)
887 0 44 unless defined $item
889 0 44 if (ref $item eq 'HASH') { }
0 44 elsif (ref $item eq 'ARRAY') { }
892 0 0 defined $item->{$k} ? :
898 0 0 defined $_ ? :
914 36 34 if $i >= scalar @$aref
941 0 4 $key_selector ? :
951 0 4 $key_selector ? :
953 0 4 if $seen{$key}++
954 2 2 if exists $second_set{$key}
967 0 4 $key_selector ? :
977 0 4 $key_selector ? :
979 0 4 if $seen{$key}++
980 2 2 unless exists $second_set{$key}
994 0 63 if ref $key
1004 74 106 if @buffer
1007 24 82 unless defined $outer_item
1010 0 82 if ref $key
1012 72 10 if (exists $inner_hash{$key})
1031 0 32 if ref $key
1032 0 32 unless defined $key
1038 10 36 unless defined $outer_item
1041 0 36 if ref $key
1042 0 36 unless defined $key
1044 26 10 exists $inner_lookup{$key} ? :
1063 1 5 unless &$predicate($item)
1073 4 2 if ($predicate) { }
1075 2 9 if &$predicate($item)
1081 1 1 defined $item ? :
1089 0 2 if ($comparer) { }
1117 1 0 unless defined $item1 or defined $item2
1118 0 6 unless defined $item1 and defined $item2
1119 1 5 unless &$comparer($item1, $item2)
1132 1 0 if ($predicate) { }
1134 1 1 if &$predicate($item)
1140 0 0 if defined $item
1150 0 0 if (@_ >= 2) { }
0 0 elsif (@_ == 1) { }
1154 0 0 if (ref $_[0] eq 'CODE') { }
1163 0 0 $@ ? :
1171 1 0 if ($predicate) { }
1173 1 0 if &$predicate($items[$i])
1178 0 0 unless @items
1188 0 0 if (@_ >= 2) { }
0 0 elsif (@_ == 1) { }
1192 0 0 if (ref $_[0] eq 'CODE') { }
1202 0 0 if ($predicate) { }
1204 0 0 if &$predicate($items[$i])
1209 0 0 @items ? :
1221 0 0 if $predicate and not &$predicate($item)
1224 0 0 if ($count > 1)
1230 0 0 if $count == 0
1242 0 0 if $predicate and not &$predicate($item)
1245 0 0 if ($count > 1)
1251 0 0 $count == 1 ? :
1257 0 0 if $index < 0
1263 0 0 if $current == $index
1273 0 0 if $index < 0
1279 0 0 if $current == $index
1294 1 17 if ($predicate)
1324 3 2 if not defined $min or $val < $min
1337 2 3 if not defined $max or $val > $max
1354 0 1 if $count == 0
1370 1 0 if $count == 0
1380 1 2 if (@args == 1) { }
1 1 elsif (@args == 2) { }
1 0 elsif (@args == 3) { }
1384 0 1 unless defined $seed
1406 1 2 $result_selector ? :
1444 0 4 unless defined $key
1464 0 8 unless defined $key
1475 0 2 unless ($has_default_arg)
1486 3 3 if (defined $item)
1491 1 1 unless ($has_elements or $returned_default)
1512 8 5 unless $first
1565 3 14 $label_order ? :
1568 41 1 defined $record->{$_} ? :
1595 1 14 defined $opts{'sep'} ? :
1598 2 4 defined $opts{'label_order'} ? :
9 6 defined $opts{'headers'} ? :
1611 14 1 unless ($no_header)
1613 10 4 if (defined $headers) { }
4 0 elsif (@items and ref $items[0] eq 'HASH') { }
1620 14 0 if (@cols)
1623 29 0 if (ref $item eq 'HASH') { }
1641 2 0 if (ref $item eq 'HASH') { }
1693 92 20 $i < scalar @sorted ? :
1712 26 130 if ($specs->[$i]{'dir'} < 0)
1713 128 28 if ($cmp != 0)
1715 128 7 $r != 0 ? :
1723 0 125 unless defined $val
1724 40 85 if ($type eq 'num') { }
59 26 elsif ($type eq 'str') { }
1725 40 0 defined $val && length $val ? :
1733 16 10 if ($t =~ /^[+-]?(?:\d+\.?\d*|\d*\.\d+)(?:[eE][+-]?\d+)?$/) { }
1744 47 109 if ($type eq 'num') { }
71 38 elsif ($type eq 'str') { }
1753 23 15 if ($fa == 0 and $fb == 0) { }
15 0 elsif ($fa == 1 and $fb == 1) { }