Branch Coverage

blib/lib/Config/IOD/Document.pm
Criterion Covered Total %
branch 224 274 81.7


line true false branch
18 0 107 unless ($attrs{'_parsed'})
21 0 107 unless ($attrs{'_parser'})
41 1 45 unless (length $name)
42 2 43 if ($name =~ /\R|\]/)
50 1 24 unless (length $name)
51 2 22 if ($name =~ /\R|=/)
52 3 19 if ($name =~ /\A(?:;|#|\[)/)
59 2 15 if ($value =~ /\R/)
65 1 1 if ($comment =~ /\R/)
71 1 4 if ($value < 1)
72 1 3 if ($value > @{$self->{'_parsed'};})
91 0 21 if (ref $_[0] eq 'HASH') { }
107 0 2 if $cur_section eq $merge
110 0 2 unless exists $res->{$merge}
118 2 19 if $parser->{'enable_expr'}
119 2 19 if $parser->{'enable_expr'}
123 0 61 if defined $opts->{'linum_start'} and $linum < $opts->{'linum_start'}
124 0 61 if defined $opts->{'linum_end'} and $linum > $opts->{'linum_end'}
127 7 54 if ($type eq 'D') { }
9 45 elsif ($type eq 'S') { }
37 8 elsif ($type eq 'K') { }
129 4 3 if ($directive eq "merge")
132 0 4 unless (defined $args)
136 2 2 @$args ? :
141 2 7 if defined $merge and $num_seen_section_lines > 1
143 1 8 if $parser->{'enable_expr'}
151 24 13 if ($val =~ /\A["!\\[\{]/) { }
154 6 18 if $err
160 0 31 if (exists $res->{$cur_section}{$key}) { }
161 0 0 if (not $parser->{'allow_duplicate_key'}) { }
0 0 elsif ($arrayified->{$cur_section}{$key}++) { }
176 0 15 if defined $merge and $num_seen_section_lines > 1
184 1 6 if (ref $_[0] eq 'HASH') { }
201 0 31 if defined $opts->{'linum_start'} and $linum < $opts->{'linum_start'}
202 0 31 if defined $opts->{'linum_end'} and $linum > $opts->{'linum_end'}
205 15 16 if ($type eq 'S') { }
16 0 elsif ($type eq 'K') { }
211 0 16 if $skip_section
213 0 16 if $opts->{'unique_key'} and $seen_keys{$key}++
221 1 15 if $opts->{'early_exit'} and not $res
228 2 11 unless $self->{'_dump_cache'}
239 0 0 if $found
240 0 0 unless $args{'linum'} > 1
241 0 0 unless $args{'section'} eq $section
242 0 0 unless $args{'key'} eq $key
244 0 0 unless $l->[0] eq "D"
258 1 1 if (ref $_[0] eq 'HASH') { }
270 0 8 unless $args{'section'} eq $section
271 1 7 if $opts->{'unique'} and $mem{$args{'key'}}++
287 0 0 unless $args{'section'} eq $section
288 0 0 unless $args{'key'} eq $key
299 4 14 if (ref $_[0] eq 'HASH') { }
311 21 24 unless $line->[0] eq "S"
312 6 18 if (defined $name)
313 4 2 unless $line->[3] eq $name
315 4 16 unless $opts->{'all'}
318 10 4 unless $opts->{'all'}
325 3 1 if (ref $_[0] eq 'HASH') { }
337 1 13 if $opts->{'unique'} and $seen{$section}++
341 3 20 if $linum_end >= @$parsed
342 10 10 if $parsed->[$linum_end][0] eq "S"
354 1 12 if $opts->{'early_exit'} and not $res
361 1 1 if (ref $_[0] eq 'HASH') { }
387 0 0 unless $args{'section'} eq $section
398 2 15 if (ref $_[0] eq 'HASH') { }
413 27 35 if ($line->[0] eq "S")
415 17 10 if ($cur_section eq $name) { }
417 2 15 if @res and not defined $res[-1][1]
420 3 7 if @res
421 2 8 if @res and not $opts->{'all'}
425 12 5 if @res and not defined $res[-1][1]
428 2 15 if ($opts->{'all'}) { }
434 3 13 if (ref $_[0] eq 'HASH') { }
447 23 39 if ($line->[0] eq "S")
451 1 38 unless $line->[0] eq "K"
452 12 26 unless $cur_section eq $section
453 15 11 unless $line->[2] eq $name
454 4 7 unless $opts->{'all'}
457 9 3 unless $opts->{'all'}
464 0 2 if (ref $_[0] eq 'HASH') { }
477 2 4 if ($linum == $asked_linum)
480 1 3 if ($line->[0] eq "S")
490 8 8 if (ref $_[0] eq 'HASH') { }
497 3 13 if $err
501 2 11 if (defined $opts->{'comment'})
503 1 1 if $err
506 2 10 if ($self->_find_section($name))
507 1 1 if ($opts->{'ignore'}) { }
515 3 7 if (defined $opts->{'linum'}) { }
2 5 elsif ($opts->{'top'}) { }
517 2 1 if $err
535 1 7 defined $opts->{'comment'} ? :
1 7 defined $opts->{'comment'} ? :
545 7 12 if (ref $_[0] eq 'HASH') { }
553 0 19 if $err_section
555 6 13 if $err_name
557 1 12 if $err_value
563 1 11 if ($opts->{'replace'})
569 2 10 unless ($line_range)
570 1 1 if ($opts->{'create_section'}) { }
578 10 1 unless (defined $linum)
580 3 7 if ($linum)
581 1 2 if ($opts->{'ignore'}) { }
1 1 elsif ($opts->{'add'}) { }
0 1 elsif ($opts->{'replace'}) { }
592 2 6 if ($opts->{'linum'}) { }
594 0 2 if $err
595 1 1 unless $self->_line_in_section($opts->{'linum'}, $section)
599 1 5 if ($opts->{'top'}) { }
603 1 4 if ($$p[$linum - 1])
604 1 0 if ($$p[$linum - 1][0] eq 'S') { }
631 2 3 if (ref $_[0] eq 'HASH') { }
638 0 5 if $err
643 2 3 if ($opts->{'all'}) { }
647 1 2 unless defined $line_ranges[0]
650 1 4 if ($opts->{'cond'})
662 0 5 unless defined $line_range
663 0 5 if $line1 < 1
668 4 1 if $num_deleted
675 3 3 if (ref $_[0] eq 'HASH') { }
682 0 6 if $err_section
684 0 6 if $err_name
689 3 3 if ($opts->{'all'}) { }
693 2 1 unless defined $linums[0]
696 1 5 if ($opts->{'cond'})
716 4 2 if $num_deleted
723 0 4 if (ref $_[0] eq 'HASH') { }
732 1 3 if $err_value
738 0 3 if $found and not $opts->{'all'}
739 1 2 unless $args{'section'} eq $section
740 1 1 unless $args{'key'} eq $key
758 182 565 if ($type eq 'B') { }
12 553 elsif ($type eq 'D') { }
63 490 elsif ($type eq 'C') { }
113 377 elsif ($type eq 'S') { }
377 0 elsif ($type eq 'K') { }
761 12 0 $abo ? :