Branch Coverage

lib/JSON/LINQ.pm
Criterion Covered Total %
branch 205 356 57.5


line true false branch
21 0 7 if ($] < "5.006" and not defined &warnings::import)
23 0 7 if $INC[-1] eq "."
43 1 1 ${$_[0];} ? :
77 41 0 defined $_[0] ? :
81 0 41 if length $$r
89 0 250 unless length $$r
93 67 183 if ($c eq '{') { }
14 169 elsif ($c eq '[') { }
85 84 elsif ($c eq '"') { }
1 83 elsif ($$r =~ s/\Anull(?=[^a-zA-Z0-9_]|$)//s) { }
12 71 elsif ($$r =~ s/\Atrue(?=[^a-zA-Z0-9_]|$)//s) { }
6 65 elsif ($$r =~ s/\Afalse(?=[^a-zA-Z0-9_]|$)//s) { }
65 0 elsif ($$r =~ s/\A(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)//s) { }
112 0 67 if ($$r =~ s/\A\}//s)
115 0 169 unless $$r =~ /\A"/
119 0 169 unless $$r =~ s/\A://s
124 102 67 if ($$r =~ s/\A,//s) { }
67 0 elsif ($$r =~ s/\A\}//s) { }
136 0 14 if ($$r =~ s/\A\]//s)
140 26 14 if ($$r =~ s/\A,//s) { }
14 0 elsif ($$r =~ s/\A\]//s) { }
158 254 920 if ($$r =~ s/\A"//s) { }
0 920 elsif ($$r =~ s[\A\\(["\\/bfnrt])][]s) { }
0 920 elsif ($$r =~ s/\A\\u([0-9a-fA-F]{4})//s) { }
920 0 elsif ($$r =~ s/\A($utf8_pat)//s) { }
171 0 0 if $cp <= 127
172 0 0 if ($cp <= 2047)
187 0 12 unless defined $v
188 0 0 $$v ? :
0 12 if (ref $v eq "JSON::LINQ::Boolean")
189 0 12 if (ref $v eq "ARRAY")
190 4 8 if (ref $v eq "HASH")
196 4 4 if (not ref $v and $v =~ /\A-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?\z/s)
228 34 170 if (exists $self->{'_factory'})
242 90 0 if (ref $source eq "ARRAY")
245 81 348 if $i >= scalar @$source
261 8 0 if ($] >= 5.006) { }
262 0 8 unless eval " open(\$fh, '<', \$file) "
266 0 0 unless open $fh, "< $file"
274 0 8 if $@
277 8 0 if (ref $data eq 'ARRAY') { }
0 0 elsif (ref $data eq 'HASH') { }
289 8 22 if $i >= scalar @$records
302 8 0 if ($] >= 5.006) { }
303 0 8 unless eval " open(\$fh, '<', \$file) "
307 0 0 unless open $fh, "< $file"
315 1 26 unless length $line
316 0 26 if $line =~ /\A\s*\z/
317 0 26 if $line =~ /\A\s*#/
320 0 26 if ($@)
336 0 7 if $@
339 6 1 if (ref $data eq 'ARRAY') { }
1 0 elsif (ref $data eq 'HASH') { }
351 7 19 if $i >= scalar @$records
364 1 5 if $remaining <= 0
386 0 0 if $remaining <= 0
404 6 4 if (@args == 1 and ref $args[0] eq 'CODE') { }
413 5 18 unless defined $row->{$k}
414 7 11 unless $row->{$k} eq $match{$k}
423 10 45 unless defined $item
424 23 22 if &$cond($item)
441 21 83 unless defined $item
456 10 8 if (@buffer)
461 2 6 unless defined $item
464 0 6 unless (ref $result eq "ARRAY")
482 5 4 unless ($first_done)
484 4 1 if (defined $item)
491 5 0 $second_iter ? :
508 0 0 unless defined $item1 and defined $item2
526 3 7 if $taken >= $count
528 0 7 unless defined $item
544 0 2 unless defined $item
559 0 0 if $done
561 0 0 unless defined $item
563 0 0 if (&$predicate($item)) { }
583 0 0 unless defined $item
585 0 0 if ($skipping) { }
586 0 0 unless (&$predicate($item))
685 0 23 unless defined $key
686 15 8 unless (exists $groups{$key})
718 5 27 unless defined $item
720 3 24 $key_selector ? :
721 0 27 unless defined $key
723 17 10 unless ($seen{$key}++)
734 0 40 unless defined $item
736 0 40 if (ref $item eq 'HASH') { }
0 40 elsif (ref $item eq 'ARRAY') { }
739 0 0 defined $item->{$k} ? :
745 0 0 defined $_ ? :
761 16 16 if $i >= scalar @$aref
788 0 4 $key_selector ? :
798 0 4 $key_selector ? :
800 0 4 if $seen{$key}++
801 2 2 if exists $second_set{$key}
814 0 4 $key_selector ? :
824 0 4 $key_selector ? :
826 0 4 if $seen{$key}++
827 2 2 unless exists $second_set{$key}
841 0 8 if ref $key
851 8 10 if @buffer
854 2 8 unless defined $outer_item
857 0 8 if ref $key
859 6 2 if (exists $inner_hash{$key})
878 0 16 if ref $key
879 0 16 unless defined $key
885 4 16 unless defined $outer_item
888 0 16 if ref $key
889 0 16 unless defined $key
891 12 4 exists $inner_lookup{$key} ? :
910 1 5 unless &$predicate($item)
920 4 2 if ($predicate) { }
922 2 9 if &$predicate($item)
928 1 1 defined $item ? :
936 0 2 if ($comparer) { }
964 1 0 unless defined $item1 or defined $item2
965 0 6 unless defined $item1 and defined $item2
966 1 5 unless &$comparer($item1, $item2)
979 1 0 if ($predicate) { }
981 1 1 if &$predicate($item)
987 0 0 if defined $item
997 0 0 if (@_ >= 2) { }
0 0 elsif (@_ == 1) { }
1001 0 0 if (ref $_[0] eq 'CODE') { }
1010 0 0 $@ ? :
1018 1 0 if ($predicate) { }
1020 1 0 if &$predicate($items[$i])
1025 0 0 unless @items
1035 0 0 if (@_ >= 2) { }
0 0 elsif (@_ == 1) { }
1039 0 0 if (ref $_[0] eq 'CODE') { }
1049 0 0 if ($predicate) { }
1051 0 0 if &$predicate($items[$i])
1056 0 0 @items ? :
1068 0 0 if $predicate and not &$predicate($item)
1071 0 0 if ($count > 1)
1077 0 0 if $count == 0
1089 0 0 if $predicate and not &$predicate($item)
1092 0 0 if ($count > 1)
1098 0 0 $count == 1 ? :
1104 0 0 if $index < 0
1110 0 0 if $current == $index
1120 0 0 if $index < 0
1126 0 0 if $current == $index
1141 1 15 if ($predicate)
1171 3 2 if not defined $min or $val < $min
1184 2 3 if not defined $max or $val > $max
1201 0 1 if $count == 0
1217 1 0 if $count == 0
1227 1 2 if (@args == 1) { }
1 1 elsif (@args == 2) { }
1 0 elsif (@args == 3) { }
1231 0 1 unless defined $seed
1253 1 2 $result_selector ? :
1291 0 4 unless defined $key
1311 0 8 unless defined $key
1322 0 2 unless ($has_default_arg)
1333 3 3 if (defined $item)
1338 1 1 unless ($has_elements or $returned_default)
1353 1 0 if ($] >= 5.006) { }
1354 0 1 unless eval " open(\$fh, '>', \$filename) "
1358 0 0 unless open $fh, "> $filename"
1366 1 1 unless $first
1383 1 0 if ($] >= 5.006) { }
1384 0 1 unless eval " open(\$fh, '>', \$filename) "
1388 0 0 unless open $fh, "> $filename"
1439 81 17 $i < scalar @sorted ? :
1458 26 120 if ($specs->[$i]{'dir'} < 0)
1459 118 28 if ($cmp != 0)
1461 118 7 $r != 0 ? :
1469 0 114 unless defined $val
1470 32 82 if ($type eq 'num') { }
56 26 elsif ($type eq 'str') { }
1471 32 0 defined $val && length $val ? :
1479 16 10 if ($t =~ /^[+-]?(?:\d+\.?\d*|\d*\.\d+)(?:[eE][+-]?\d+)?$/) { }
1490 39 107 if ($type eq 'num') { }
69 38 elsif ($type eq 'str') { }
1499 23 15 if ($fa == 0 and $fb == 0) { }
15 0 elsif ($fa == 1 and $fb == 1) { }