Condition Coverage

lib/ChordPro/Output/PDF/Song.pm
Criterion Covered Total %
condition 64 468 13.6


and 3 conditions

line !l l&&!r l&&r condition
87 0 0 0 $s->{'meta'}{'title'}[0] eq $s->{'source'}{'file'} and $p->{'Title'}
181 40 0 0 $s->{'labels'} and @{$s->{'labels'};}
217 0 0 40 defined $st and not $ps->{'titles-directive-ignore'}
293 0 0 0 defined $spreadimage and not ref $spreadimage
369 0 0 0 $fn and fs_test("rs", $fn)
370 0 0 0 $pagectrl->{'dual_pages'} and not $rightpage
381 40 0 0 $ps->{'head-first-only'} and $class == 2
406 0 0 144 $vsp >= 0 and $y - $vsp >= $ps->{'_bottommargin'}
421 0 0 40 not defined $chords and $s->{'chords'}
448 24 0 0 $show eq "right" and $class <= 1
0 0 24 $show eq 'top' || $show eq 'bottom' and $class <= 1
0 0 24 $show eq 'top' || $show eq 'bottom' and $class <= 1 and $col == 0
511 24 0 0 $dctl->{'align'} eq "spread" and @chords == $h0
556 0 0 0 $dctl->{'align'} eq "spread" and @chords == $h0
626 0 40 0 $source->{'file'} and $main::options->{'debug'} || $main::config->{'debug'}{'runtimeinfo'} && $ChordPro::VERSION =~ /_/u
656 0 120 40 $elt->{'type'} ne "set" and not $did++
680 0 0 24 @elts and not $elts[0]{'type'} =~ /empty|ignore/u
720 0 0 72 $elt->{'type'} eq "songline" and not $elt->{'indent'}
741 0 0 0 $style->{'bar'}{'offset'} and $style->{'bar'}{'width'}
754 72 0 0 $elt->{'type'} =~ /^comment/u and not $elt->{'indent'}
941 0 0 0 $elt->{'multi'} and not $elt->{'msel'}
957 0 0 0 $t->{'quote'} and $elt->{'chorus'}
0 0 0 $elt->{'chorus'} and $elt->{'chorus'}[0]{'type'} eq "set"
0 0 0 $elt->{'chorus'} and $elt->{'chorus'}[0]{'type'} eq "set" and $elt->{'chorus'}[0]{'name'} eq "label"
0 0 0 $t->{'tag'} and $t->{'type'} =~ /^comment(?:_(?:box|italic))?/u
1098 0 0 0 $ps->{'labels'}{'comment'} and $v[4] ne ""
1108 0 0 0 $elt->{'context'} eq "grid" and $lyrics_only
1109 0 0 0 $ps->{'labels'}{'comment'} and $elt->{'value'} ne ""
1145 40 0 0 $pagectrl->{'align_songs_extend'} and $pages % 2
40 0 0 $pagectrl->{'align_songs_extend'} and $pages % 2 and $opts->{'songindex'} < $opts->{'numsongs'} || $opts->{'forcealign'}
1422 0 72 0 $suppress_empty_chordsline and not has_visible_chords($elt)
1480 144 0 0 $chordscol and $chord ne ""
1499 0 0 0 defined $rest and not $rest =~ /^\
1545 0 0 0 $i < $n and not demarkup($phrase) =~ /\s$/u
0 0 0 $i < $n and not demarkup($phrase) =~ /\s$/u and not demarkup($phrases[$i + 1]) =~ /^\s/u
0 0 0 $i < $n and not demarkup($phrase) =~ /\s$/u and not demarkup($phrases[$i + 1]) =~ /^\s/u and my $marker = $ps->{'split-marker'}
1663 0 0 0 $width and $width =~ /^(\d+(?:\.\d+)?)\%$/u
1666 0 0 0 $height and $height =~ /^(\d+(?:\.\d+)?)\%$/u
1674 0 0 0 $width and not $height
0 0 0 not $width and $height
1723 0 0 0 defined $oy and $oy =~ /base([-+].*)/u
1751 0 0 0 not $spaceok and $xtrascale < 1
2036 0 72 0 $suppress_empty_chordsline and not has_visible_chords($elt)
2039 0 72 0 $suppress_empty_lyricsline and not join("", @{$elt->{'phrases'};}) =~ /\S/u
2092 72 0 0 $msg and $elt->{'line'}
2221 0 0 0 defined $spreadimage and not ref $spreadimage
2280 138 12 0 not $rightpage and exists $ps->{'formats'}{$class . '-even'}{$type}
2291 120 0 0 @$fmt == 3 and not is_arrayref($fmt->[0])
2384 72 0 72 @rchords and $chord
2411 144 0 0 $w > $m - $x and @rchords > 1
2423 0 0 0 $rphrases[-1] =~ /[[:alpha:]]$/u and $ex =~ /^[[:alpha:]]/u
0 0 0 $rphrases[-1] =~ /[[:alpha:]]$/u and $ex =~ /^[[:alpha:]]/u and $chord ne ""
2495 0 0 0 $elt->{'type'} eq "image" and $elt->{'subtype'} eq "delegate"
2514 0 0 0 $elt->{'opts'}{'width'} and $elt->{'opts'}{'width'} < $w
2540 0 0 0 $res and $res->{'type'} eq "image"
2549 0 0 0 $elt->{'type'} eq "image" and $elt->{'subtype'} eq "svg"
2610 0 0 0 $elt->{'type'} eq "image" and $elt->{'subtype'} eq "xform"
2653 0 0 0 $elt->{'uri'} and not $elt->{'data'}
2680 0 0 0 $elt->{'type'} eq "image" and $elt->{'opts'}{'spread'}
2777 0 0 0 $has_sharp and $has_flat

or 2 conditions

line l !l condition
47 0 144 $i_tag // ""
120 0 40 $main::options->{'backend-option'}{'structure'} // ""
971 0 0 $t->{'type'} // "comment"
0 0 $t->{'type'} // "label"
985 0 0 $t->{'type'} // "comment"
0 0 $t->{'type'} // "label"
1398 0 0 $main::config->{'settings'}{'wrapindent'} // "x"
1433 0 0 $main::config->{'settings'}{'wrapindent'} // "x"
1457 72 0 $elt->{'chords'} //= [""]
1500 0 0 $rest // ""
1502 0 0 $pre // ""
0 0 $rest // ""
1610 0 0 $asset->{'opts'} // {}
0 0 $elt->{'opts'} // {}
1613 0 0 $opts->{'anchor'} //= "float"
1623 0 0 $asset->{'opts'}{'design_scale'} || 1
1731 0 0 $opts->{'center'} // 1
1741 0 0 $align //= "left"
1768 0 0 $ox // 0
1769 0 0 $oy // 0
1820 0 0 $ox // 0
0 0 $oy // 0
1830 0 0 $opts->{'border'} || 0
0 0 $opts->{'valign'} // "top"
1844 0 0 $opts->{'border'} || 0
0 0 $opts->{'valign'} // "top"
1848 0 0 $oy // 0
1874 0 0 $asset->{'opts'}{'scale'} || 1
1908 0 0 $opts->{'center'} // 1
1925 0 0 $opts->{'border'} || 0
1946 48 0 $elt->{'pageno'} // ""
2111 0 0 $ps->{'columns'} ||= 1
2114 40 0 $cols ||= 1
2359 40 80 $ps->{'spacing'}{$type} || 1
2369 72 0 $elt->{'chords'} // []
2370 72 0 $elt->{'phrases'} // []
2375 72 0 $main::config->{'settings'}{'wrapindent'} // "x"
2380 144 0 shift @phrases // ""
2455 0 40 $s->{'assets'} // {}
2466 0 40 $s->{'assets'} || {}
2493 0 0 $elt->{'subtype'} //= "image"
2499 0 0 $elt->{'opts'} // {}
2518 0 0 $res->{'opts'} // {}
2519 0 0 $elt->{'opts'} // {}
2523 0 0 $res->{'opts'} // {}
2536 0 0 $elt->{'opts'} // {}
2559 0 0 $elt->{'opts'}{'staffsep'} || 0
2567 0 0 $main::config->{'debug'}{'svg'} // 0
2591 0 0 $o->[0]{'opts'} // {}
2592 0 0 $s->{'assets'}{$id}{'opts'} // {}
2606 0 0 $res->{'opts'}{'scale'} || 1
0 0 $res->{'opts'}{'align'} // "default"
0 0 $res->{'opts'}{'base'} // ""
2617 0 0 $elt->{'uri'} // ""
2623 0 0 $s->{'define'} // []
2648 0 0 $res->{'opts'} // {}
2672 0 0 $res->{'opts'} // {}
2701 0 0 $style->{'font-style'} // "normal"
2702 0 0 $style->{'font-weight'} // "normal"
2703 0 0 $style->{'font-size'} || 12

or 3 conditions

line l !l&&r !l&&!r condition
94 40 0 0 $s->{'config'} // $main::config
146 0 40 0 $s->{'settings'}{'columns'} || $main::config->{'settings'}{'columns'}
183 0 0 0 $fonts->{'label'} || $fonts->{'text'}
216 0 40 0 $s->{'settings'}{'titles'} || $main::config->{'settings'}{'titles'}
252 0 0 0 $fonts->{$tag}{'_size'} //= $main::config->{'pdf'}{'fonts'}{$tag}{'size'}
356 0 0 15 $ps->{'formats'}{'first'}{'background'} || $ps->{'formats'}{'title'}{'background'} || $bgpdf
361 0 0 25 $ps->{'formats'}{'title'}{'background'} || $bgpdf
418 0 0 40 $lyrics_only or not $dctl->{'show'}
422 0 40 0 $show //= $dctl->{'show'}
448 0 24 0 $show eq 'top' || $show eq 'bottom'
464 0 0 0 $s->{'settings'}{'columns'} || $main::config->{'settings'}{'columns'}
582 0 0 0 $elts //= $elts[-1]
626 0 0 40 $main::options->{'debug'} || $main::config->{'debug'}{'runtimeinfo'} && $ChordPro::VERSION =~ /_/u
647 0 0 0 $ps->{'showlayout'} or $main::config->{'debug'}{'spacing'}
672 0 0 40 $ps->{'showlayout'} or $main::config->{'debug'}{'spacing'}
696 72 0 48 $elt->{'type'} eq "songline" or $elt->{'type'} eq "tabline"
72 0 48 $elt->{'type'} eq "songline" or $elt->{'type'} eq "tabline" or $elt->{'type'} =~ /^comment(?:_box|_italic)?$/u
712 0 0 0 $fonts->{$type} || $fonts->{'comment'}
850 0 0 48 $elt->{'type'} eq "gridline" or $elt->{'type'} eq "strumline"
852 0 0 0 $lyrics_only or not $ps->{'grids'}{'show'}
1035 0 0 0 $fn //= $elt->{'value'}
1036 0 0 0 $fn =~ m[/]u or $fn =~ /\.(ttf|otf)$/iu
1145 0 0 0 $opts->{'songindex'} < $opts->{'numsongs'} || $opts->{'forcealign'}
1209 0 40 0 $s->{'meta'}{'page.first.side'} //= $s->{'meta'}{'page.side'}
1242 0 0 0 $label eq "" or $ps->{'_indent'} == 0
1244 0 0 0 $ps->{'fonts'}{'label'} || $ps->{'fonts'}{'text'}
1245 0 0 0 $font->{'size'} ||= $font->{'fd'}{'size'}
1376 0 0 0 $elt->{'font'} || $fonts->{$type} || $fonts->{'comment'}
1422 0 0 72 $lyrics_only or $suppress_empty_chordsline and not has_visible_chords($elt)
1441 0 0 72 $chordscol or $inlinechords
1499 0 0 0 $i == $n or defined $rest and not $rest =~ /^\
1564 0 0 0 $marker->[0] || $marker->[1]
1670 0 0 0 $width || $avwidth || $img->width
0 0 0 $height || $avheight || $img->height
1675 0 0 0 $avwidth || $img->width
0 0 0 $avheight || $img->height
1678 0 0 0 $avheight || $img->height
0 0 0 $avwidth || $img->width
1731 0 0 0 $align //= $opts->{'center'} // 1 ? "center" : "left"
1759 0 0 0 $i_tag // $label
1871 0 0 0 $opts->{'width'} || $img->width
0 0 0 $opts->{'height'} || $img->height
1908 0 0 0 $align //= $opts->{'center'} // 1 ? "center" : "left"
2021 0 0 0 $$fonts{$elt->{'type'}} || $fonts->{'comment'}
2034 0 0 72 $lyrics_only or $chordscol
2053 72 160 0 $sptype ||= $eltype
2125 0 0 0 not $_ or $_ eq "*"
2138 0 0 0 not $_ or $_ eq "*"
2447 0 0 0 $font ||= $pr->{'font'}
2458 0 0 40 $main::config->{'debug'}{'images'} or $main::config->{'debug'}{'assets'}
2465 0 0 40 $main::config->{'debug'}{'images'} or $main::config->{'debug'}{'assets'}
2505 0 0 0 $pkg->can($elt->{'handler'}) // die("PDF: Missing delegate handler ${pkg}::$elt->{'handler'}\n")
2557 0 0 0 !($elt->{'opts'}{'split'} // 1) || $elt->{'opts'}{'id'} || defined $elt->{'opts'}{'spread'}
2620 0 0 0 $s->{'chordsinfo'}{$chord} // ChordPro::Chords::known_chord($chord)
2633 0 0 0 $elt->{'opts'}{'type'} || $main::config->{'instrument'}{'type'}
2733 0 0 0 $fc->{$key} //= do { my $t; my $try = eval { do { $t = "Text::Layout::FontConfig"->find_font($family, $stl, $weight); $t->get_font($ps->{'pr'}{'layout'}->copy) } }; if ($try) { warn("SVG: Font $key found in font config: ", $t->{'loader_data'}, "\n") if $main::config->{'debug'}{'svg'}; $try; } else { return; } }