Branch Coverage

lib/ChordPro/Chords/Parser.pm
Criterion Covered Total %
branch 158 260 60.7


line true false branch
67 0 2 unless $main::config
72 0 2 unless $cfg->{'notes'}
74 0 2 unless $system
77 0 2 if ($system eq "nashville")
80 0 2 if ($system eq "roman")
133 272 311 if $parsers{$system}
135 2 309 if ($system eq 'nashville') { }
2 307 elsif ($system eq 'roman') { }
0 307 elsif ($system ne $main::config->{'notes'}{'system'}) { }
307 0 elsif ($system) { }
0 0 elsif ($nofallback) { }
171 219 0 unless @which
203 0 0 $cfg->{'settings'}{'chordnames'} eq 'relaxed' ? :
0 309 if $main::options->{'verbose'} > 1
214 149 63721 if ($chord =~ m[^(.*)/($self->{'n_pat'})$]u)
222 0 63870 if ($chord eq '' and $bass ne '') { }
39891 23979 elsif ($chord =~ /^$self->{'c_pat'}$/u) { }
22 23957 elsif ($self->{'c_rpat'} and $main::config->{'settings'}{'chordnames'} eq 'relaxed' and $chord =~ /^$self->{'c_rpat'}$/u) { }
6 23951 elsif ($main::config->{'settings'}{'notenames'} and ucfirst($chord) =~ /^$self->{'n_pat'}$/u) { }
234 0 22 unless $info->{'root'} = $plus{'root'}
251 2074 30054 if $q eq "m" or $q eq "mi" or $q eq "min"
252 2023 37896 if $q eq "aug"
253 4097 35822 if $q eq "dim"
254 41 39878 if $q eq "o"
258 19796 20123 unless ($info->{'qual'})
259 48 19748 if ($x eq "maj")
264 2075 37844 if $x eq "sus"
270 6 40062 if $info->{'isnote'}
271 29251 10817 if (defined $self->{'ns_tbl'}{$r}) { }
10817 0 elsif (defined $self->{'nf_tbl'}{$r}) { }
273 18858 10393 defined $self->{'nf_tbl'}{$r} ? :
288 39919 0 unless $info->is_rootless
290 0 39919 unless ref($info) =~ /ChordPro::Chord::/u
293 149 39770 if ($info->{'bass'} = $bass)
294 149 0 if ($bass =~ /^$self->{'n_pat'}$/u)
296 0 149 if ($info->is_rootless)
304 0 39919 if ($main::config->{'settings'}{'chords-canonical'})
308 0 0 if $info->{'name_canon'} ne $t and $main::config->{'debug'}{'chords'}
450 0 309 unless $n->{'system'}
455 1530 2178 if (UNIVERSAL::isa($root, 'ARRAY')) { }
467 1539 2169 if (UNIVERSAL::isa($root, 'ARRAY')) { }
485 1854 5500 if $ns_tbl{$_}
525 698 192 $sharp ? :
549 0 2 if $main::options->{'verbose'} and $main::options->{'verbose'} > 1
559 0 408 unless UNIVERSAL::isa($_[0], __PACKAGE__)
565 0 408 if ($chord =~ m[^(.*)/(.*)]u)
570 0 408 unless $chord =~ /^$n_pat(?-|\+|0|o|aug|m(?!aj)|dim)?(?.*)$/u
581 0 408 if $q eq "m"
582 0 408 if $q eq "aug"
583 0 408 if $q eq "dim"
584 0 408 if $q eq "o"
589 0 408 if $x eq "sus"
596 120 288 if ($+{'shift'} eq '#') { }
120 168 elsif ($+{'shift'} eq 'b') { }
600 0 120 if $$info{"${pfx}_ord"} >= 12
606 0 120 if $$info{"${pfx}_ord"} < 0
617 408 0 unless $bass
618 0 0 unless $bass =~ /^$n_pat$/u
627 0 12 unless UNIVERSAL::isa($_[0], __PACKAGE__)
630 12 0 $sharp ? :
637 0 2 unless UNIVERSAL::isa($_[0], __PACKAGE__)
643 0 2 unless UNIVERSAL::isa($_[0], __PACKAGE__)
662 0 2 if $main::options->{'verbose'} and $main::options->{'verbose'} > 1
671 0 612 unless UNIVERSAL::isa($_[0], __PACKAGE__)
677 0 612 if ($chord =~ m[^(.*)/(.*)]u)
682 0 612 unless $chord =~ /^$r_pat(?\+|0|o|aug|dim|h)?(?.*)$/u
693 306 306 if $r eq lc $r
694 0 612 if $q eq "aug"
695 0 612 if $q eq "dim"
696 0 612 if $q eq "o"
701 0 612 if $x eq "sus"
702 0 612 if $x eq "7+"
709 180 432 if ($+{'shift'} eq '#') { }
180 252 elsif ($+{'shift'} eq 'b') { }
713 0 180 if $$info{"${pfx}_ord"} >= 12
719 180 0 if $$info{"${pfx}_ord"} < 0
730 612 0 unless $bass
731 0 0 unless $bass =~ /^$r_pat$/u
740 0 12 unless UNIVERSAL::isa($_[0], __PACKAGE__)
742 0 12 if $minor
744 12 0 $sharp ? :
751 0 2 unless UNIVERSAL::isa($_[0], __PACKAGE__)
757 0 2 unless UNIVERSAL::isa($_[0], __PACKAGE__)
774 0 381 unless UNIVERSAL::isa($_[0], __PACKAGE__)
785 8 1846 if defined $self->kbkeys and not @{$self->kbkeys;}
787 210 1636 unless @{$self->frets // [];}
789 1636 1734 unless $_ < 0
796 0 1383 unless defined $_[0]{'root'} or defined $_[0]{'bass'}
803 0 814 $main::config->{'instrument'}{'type'} eq 'keyboard' ? :
817 0 6657 if $self->{'parens'} and $self->{'name'} =~ /^\(.*\)$/u
818 6657 0 if $np or not $self->{'parens'}
840 3171 538 if $_[0]{'keys'} and @{$_[0]{'keys'};}
852 0 0 if (not $main::config->{'settings'}{'enharmonic-transpose'} and $args->{'key'})
854 0 0 if $args->{'root'} eq "F" and $args->{'key'} eq "F#"
856 0 0 if $args->{'root'} eq "B" and $args->{'key'} eq "Gb"
862 1536 789 unless $fmt
863 10 779 if $self->is_note
870 22 753 if $main::config->{'settings'}{'truesf'} or $main::config->{'settings'}{'maj7delta'}
876 87 17479 if ($k eq 'orig' or $k eq 'xc' or $k eq 'xp') { }
896 15 7 if @c % 2
900 37 0 if ($sf)
901 15 22 if ($did) { }
910 0 37 if ($delta)
922 0 0 unless defined $self->{$_}
923 0 0 if defined $c->{$_}
924 0 0 if (UNIVERSAL::can($self->{$_}, 'simplify')) { }
0 0 elsif (ref $self->{$_} eq 'ARRAY' and @{$self->{$_};}) { }
963 519 0 $self->is_chord ? :
0 519 $self->is_rootless ? :
965 4 515 if ($self->is_note)
968 3 512 if ($self->{'bass'} and $self->{'bass'} ne "")
970 0 3 $self->{'system'} eq 'roman' ? :
977 6 38595 if $self->is_rootless or $self->is_note
987 13 372 unless $xpose
988 0 372 unless $self->is_chord
995 214 161 if $root =~ /^(0|2|4|5|7|9|11)$/u
999 372 0 unless ($self->{'rootless'})
1006 3 0 if ($self->{'bass'} and $self->{'bass'} ne "" and not $self->{'bass'} =~ /^\d+$/u)
1021 123 20 unless $xcode
1022 0 20 unless $self->is_chord
1023 0 20 if $self->{'system'} eq $xcode
1028 0 20 unless $p->{'system'} eq $xcode
1030 4 16 if ($key_ord and $p->movable)
1034 20 0 unless ($self->{'rootless'})
1040 0 20 if ($p->{'system'} eq "roman" and $info->{'qual_canon'} eq "-")
1044 0 20 if ($self->{'bass'} and $self->{'bass'} ne "")
1045 0 0 if ($key_ord and $p->movable)
1081 0 0 if ($self->{'bass'} and $self->{'bass'} ne "")
1108 0 0 if ($self->{'bass'} and $self->{'bass'} ne "")
1160 0 0 if (defined $fmt) { }