Condition Coverage

lib/ChordPro/Output/PDF.pm
Criterion Covered Total %
condition 94 434 21.6


and 3 conditions

line !l l&&!r l&&r condition
55 0 24 8 defined $v and $v ne ""
75 2 6 0 $ps->{'even-odd-pages'} and not $page % 2
85 6 8 10 $ps->{'pagealign-songs'} and not $page % 2
163 4 0 12 $ps->{'even-odd-pages'} and $page % 2
4 0 12 $ps->{'even-odd-pages'} and $page % 2 and not $first_song_aligned
184 0 0 3 $ps->{'even-odd-pages'} and not $page % 2
196 0 3 0 $ps->{'even-odd-pages'} and $page % 2
250 0 0 328 defined $v and defined $v->[0]
357 0 0 0 $s->{'meta'}{'title'}[0] eq $s->{'source'}{'file'} and $p->{'Title'}
445 40 0 0 $s->{'labels'} and @{$s->{'labels'};}
482 0 0 40 defined $st and not $ps->{'titles-directive-ignore'}
624 0 0 0 $ps->{'even-odd-pages'} and not $rightpage
636 42 0 0 $ps->{'head-first-only'} and $class == 2
656 0 0 144 $vsp >= 0 and $y - $vsp >= $ps->{'_bottommargin'}
671 0 16 24 not defined $chords and $s->{'chords'}
696 24 0 0 $show eq "right" and $class <= 1
24 0 0 $show eq "top" and $class <= 1
0 0 24 $show eq "bottom" and $class <= 1
0 0 24 $show eq "bottom" and $class <= 1 and $col == 0
814 160 0 0 $elt->{'type'} eq "image" and $elt->{'opts'}{'spread'}
160 0 0 $elt->{'type'} eq "delegate" and $elt->{'subtype'} eq "image"
160 0 0 $elt->{'type'} eq "delegate" and $elt->{'subtype'} eq "image" and $elt->{'data'}[0] =~ /\bspread=\d+\b$/
855 16 24 0 $source->{'file'} and $main::options->{'debug'}
878 0 120 40 $elt->{'type'} ne "set" and not $did++
924 0 0 72 $elt->{'type'} eq "songline" and not $elt->{'indent'}
945 0 0 0 $style->{'bar'}{'offset'} and $style->{'bar'}{'width'}
958 72 0 0 $elt->{'type'} =~ /^comment/ and not $elt->{'indent'}
1279 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))?/
1419 0 0 0 $ps->{'labels'}{'comment'} and $v[4] ne ""
1429 0 0 0 $ps->{'labels'}{'comment'} and $elt->{'value'} ne ""
1471 35 0 5 $ps->{'pagealign-songs'} > 1 and $pages % 2
35 3 2 $ps->{'pagealign-songs'} > 1 and $pages % 2 and $opts->{'songindex'} < $opts->{'numsongs'}
1741 0 72 0 $suppress_empty_chordsline and not has_visible_chords($elt)
1794 144 0 0 $chordscol and $chord ne ""
1861 0 0 0 $i < $n and not demarkup($phrase) =~ /\s$/
0 0 0 $i < $n and not demarkup($phrase) =~ /\s$/ and not demarkup($phrases[$i + 1]) =~ /^\s/
0 0 0 $i < $n and not demarkup($phrase) =~ /\s$/ and not demarkup($phrases[$i + 1]) =~ /^\s/ and my $marker = $ps->{'split-marker'}
1973 0 0 0 $prevvoltastart and @tokens
0 0 0 $prevvoltastart and @tokens and $tokens[0]{'class'} eq "bar"
0 0 0 $prevvoltastart and @tokens and $tokens[0]{'class'} eq "bar" and $tokens[0]{'align'}
2051 0 0 0 $k <= $#tokens and not is_bar($tokens[$k])
2096 0 0 0 $k <= $#tokens and not is_bar($tokens[$k])
2111 0 0 0 $margin->[1] and $elt->{'comment'}
2238 0 0 0 $a->{'src'} and not $a->{'data'}
2297 0 0 0 $opts->{'width'} and $opts->{'width'} =~ /^(\d+(?:\.\d+)?)\%$/
2300 0 0 0 $opts->{'height'} and $opts->{'height'} =~ /^(\d+(?:\.\d+)?)\%$/
2551 0 72 0 $suppress_empty_chordsline and not has_visible_chords($elt)
2554 0 72 0 $suppress_empty_lyricsline and not join("", @{$elt->{'phrases'};}) =~ /\S/
2896 0 0 126 @$fmt == 3 and ref $fmt->[0] ne "ARRAY"
2964 72 0 72 @rchords and $chord
2991 144 0 0 $w > $m - $x and @rchords > 1
3003 0 0 0 $rphrases[-1] =~ /[[:alpha:]]$/ and $ex =~ /^[[:alpha:]]/
0 0 0 $rphrases[-1] =~ /[[:alpha:]]$/ and $ex =~ /^[[:alpha:]]/ and $chord ne ""
3137 0 0 0 $has_sharp and $has_flat

or 2 conditions

line l !l condition
48 0 0 $main::options->{'output'} || '__new__.pdf'
73 0 8 $main::options->{'start-page-number'} ||= 1
88 10 0 $first_song_aligned //= 1
90 16 8 $first_song_aligned //= 0
97 0 0 $song->{'assets'} //= {}
120 8 0 $main::config->{'contents'} //= [{$main::config->{'toc'}{'order'} eq "alpha" ? ("fields", ["title"]) : ("fields", ["songindex"]), "label", $main::config->{'toc'}{'title'}, "line", $main::config->{'toc'}{'line'}}]
219 8 0 $main::options->{'output'} || '__new__.pdf'
244 8 0 $ctl->{'separator'} // ";"
245 8 0 $ctl->{'vseparator'} // "|"
309 24 0 $main::options->{'start-page-number'} || 1
367 0 40 $s->{'assets'} || {}
385 0 40 $main::options->{'backend-option'}{'structure'} // ""
552 40 0 $opts->{'startpage'} || 1
838 0 0 $pkg->can($elt->{'handler'}) // die("PDF: Missing delegate handler ${pkg}::$elt->{'handler'}\n")
1118 0 0 $pkg->can($elt->{'handler'}) // die("PDF: Missing delegate handler ${pkg}::$elt->{'handler'}\n")
1195 0 0 $elt->{'opts'}{'sep'} || 0
1205 0 0 $elt->{'opts'}{'scale'} || 1
1215 0 0 $elt->{'opts'}{'scale'} || 1
0 0 $elt->{'opts'}{'center'} // 0
1229 0 0 $elt->{'opts'}{'sep'} || 0
1256 0 0 $elt->{'opts'}{'center'} // 0
1293 0 0 $t->{'type'} // "comment"
1307 0 0 $t->{'type'} // "comment"
1693 0 72 $i_tag // ""
1771 72 0 $elt->{'chords'} //= [""]
1811 0 0 $word // " "
1925 0 0 $i_tag // ""
1938 0 0 $elt->{'tokens'} //= [{}]
2067 0 0 $token->{'chords'} // [$token->{'chord'}]
2252 0 0 $assets //= {}
2312 0 0 $opts->{'scale'} || 1
2354 0 0 $opts->{'anchor'} //= "float"
2360 0 0 $ox // 0
2361 0 0 $oy // 0
2403 0 0 $ox // 0
0 0 $oy // 0
2413 0 0 $ox // 0
0 0 $oy // 0
2415 0 0 $opts->{'border'} || 0
2420 0 0 $oy // 0
2454 0 0 $opts->{'scale'} || 1
2480 0 0 $opts->{'border'} || 0
2616 0 0 $ps->{'columns'} ||= 1
2619 40 0 $cols ||= 1
2941 42 84 $ps->{'spacing'}{$type} || 1
2951 72 0 $elt->{'chords'} // []
2952 72 0 $elt->{'phrases'} // []
2960 144 0 shift @phrases // ""
3076 0 0 $style->{'font-style'} // "normal"
3077 0 0 $style->{'font-weight'} // "normal"
3078 0 0 $style->{'font-size'} || 12
3170 0 0 eval { do { $ps->{'fonts'}{$f}{'description'} } } || eval { do { $ps->{'fonts'}{$f}{'file'} } } || eval { do { '[' . $ps->{'fonts'}{$f}{'name'} . ']' } } || '[]'

or 3 conditions

line l !l&&r !l&&!r condition
43 0 0 8 $verbose ||= $main::options->{'verbose'}
123 0 24 0 $main::options->{'toc'} // @book > 1
240 0 0 8 $main::config->{'debug'}{'csv'} or $main::options->{'verbose'}
273 0 264 0 $_->{'value'} // "%{" . $_->{'meta'} . "}"
325 0 0 8 $main::config->{'debug'}{'csv'} or $main::options->{'verbose'}
364 24 16 0 $s->{'config'} // $main::config
410 0 40 0 $s->{'settings'}{'columns'} || $main::config->{'settings'}{'columns'}
447 0 0 0 $fonts->{'label'} || $fonts->{'text'}
481 0 40 0 $s->{'settings'}{'titles'} || $main::config->{'settings'}{'titles'}
517 0 0 0 $fonts->{$tag}{'_size'} //= $main::config->{'pdf'}{'fonts'}{$tag}{'size'}
610 0 0 24 $ps->{'formats'}{'first'}{'background'} || $ps->{'formats'}{'title'}{'background'} || $bgpdf
615 0 0 16 $ps->{'formats'}{'title'}{'background'} || $bgpdf
668 0 0 40 $lyrics_only or not $dctl->{'show'}
672 0 40 0 $show //= $dctl->{'show'}
712 0 0 0 $s->{'settings'}{'columns'} || $main::config->{'settings'}{'columns'}
821 0 0 0 $spreadimage //= $elt
881 0 0 40 $ps->{'showlayout'} or $main::config->{'debug'}{'spacing'}
900 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)?$/
916 0 0 0 $fonts->{$type} || $fonts->{'comment'}
1056 0 0 0 $lyrics_only or not $ps->{'grids'}{'show'}
1114 0 0 0 $1 // $elt->{'delegate'}
1182 0 0 0 $main::config->{'debug'}{'svg'} or not @$o
1358 0 0 0 $fn //= $elt->{'value'}
1359 0 0 0 $fn =~ m[/] or $fn =~ /\.(ttf|otf)$/i
1567 144 0 0 $label eq "" or $ps->{'_indent'} == 0
1569 0 0 0 $ps->{'fonts'}{'label'} || $ps->{'fonts'}{'text'}
0 0 0 $font ||= $ps->{'fonts'}{'label'} || $ps->{'fonts'}{'text'}
1570 0 0 0 $font->{'size'} ||= $font->{'fd'}{'size'}
1699 0 0 0 $elt->{'font'} || $fonts->{$type} || $fonts->{'comment'}
1741 0 0 72 $lyrics_only or $suppress_empty_chordsline and not has_visible_chords($elt)
1755 0 0 72 $chordscol or $inlinechords
1880 0 0 0 $marker->[0] || $marker->[1]
1945 0 0 0 $firstbar //= $i
2015 0 0 0 $prevvoltastart ||= $x
2066 0 0 0 $token->{'class'} eq "chord" or $token->{'class'} eq "chords"
2279 0 0 0 $img //= eval { do { $pr->get_image($elt) } }
2306 0 0 0 $opts->{'width'} || $img->width
0 0 0 $opts->{'height'} || $img->height
2347 0 0 0 $i_tag // $opts->{'label'}
2452 0 0 0 $opts->{'width'} || $img->width
0 0 0 $opts->{'height'} || $img->height
2472 0 0 0 $i_tag // $opts->{'label'}
2536 0 0 0 $$fonts{$elt->{'type'}} || $fonts->{'comment'}
2549 0 0 72 $lyrics_only or $chordscol
2568 72 112 0 $sptype ||= $eltype
2630 0 0 0 not $_ or $_ eq "*"
2643 0 0 0 not $_ or $_ eq "*"
2783 0 8 0 $pdfapi //= config_pdfapi($pdf->{'library'})
2853 128 184 0 $fonts->{$font}{$_} //= $fonts->{$def}{$_}
2870 0 8 0 $fonts->{'footer'}{'size'} //= "0.6" * $fonts->{'subtitle'}{'size'}
3027 0 0 0 $font ||= $pr->{'font'}
3099 0 0 0 $fc->{$key} //= do { my $t; my $try = eval { do { $t = "Text::Layout::FontConfig"->find_font($family, $stl, $weight); $t->get_font("Text::Layout"->new($pdf)) } }; if ($try) { warn "SVG: Font $key found in font config: ", $t->{'loader_data'}, "\n" if $main::config->{'debug'}{'svg'}; $try; } else { return; } }