Condition Coverage

blib/lib/MP3/Tag.pm
Criterion Covered Total %
condition 211 393 53.6


and 2 conditions

line l !l condition
2643 0 0 eval { do { my($a, $b); $self->_parse_rex_microinterpolate("=$code", $a, $b) } } and die "escape `%${code}' can't be parsed; did you forget to put `='?"

and 3 conditions

line !l l&&!r l&&r condition
101 6 0 0 $force_enc || ($ENV{'LANG'} || '') =~ /\.([-\w]+)$/i && ($i_enc = $1, 1) and not ${^UNICODE} & 8
0 0 0 $force_enc || ($ENV{'LANG'} || '') =~ /\.([-\w]+)$/i && ($i_enc = $1, 1) and not ${^UNICODE} & 8 and not $ENV{'MP3TAG_DECODE_FILES_DEFAULT_RESET'}
103 6 0 0 $force_enc || ($ENV{'LANG'} || '') =~ /\.([-\w]+)$/i && ($o_enc = $1, 1) and not ${^UNICODE} & 22
0 0 0 $force_enc || ($ENV{'LANG'} || '') =~ /\.([-\w]+)$/i && ($o_enc = $1, 1) and not ${^UNICODE} & 22 and not $ENV{'MP3TAG_ENCODE_FILES_DEFAULT_RESET'}
105 36 0 6 $t eq "FILES" and not defined $ENV{"MP3TAG_DECODE_${t}_DEFAULT"}
117 0 6 0 not defined $e{'eF'} and defined $ENV{'MP3TAG_DECODE_FILES_DEFAULT'} || defined $ENV{'MP3TAG_DECODE_DEFAULT'}
460 0 50 111 defined $out and length $out
621 1012 53 1 $pack eq "ID3v1" and not $MP3::Tag::ID3v1::ok_length{$what}
622 53 1011 1 $do_can and not $self->{$pack}->can($what)
623 1064 0 0 $check_only and $self->{$pack}->can(my $m = $what . "_have")
629 190 38 33 not length $out and $ignore_0length{$pack}
697 0 2 2 not $force2 and $mp3->{'ID3v1'}->fits_tag({$elt, $val})
2 0 2 not $force2 and $mp3->{'ID3v1'}->fits_tag({$elt, $val}) and not exists $mp3->{'ID3v2'}
707 0 0 0 $w and $h
743 0 0 0 $h && $self->_Data_to_MIME($h, 1)
1522 0 7 0 @_ <= 2 and not defined $_[1]
1535 0 0 0 not $do and $fname =~ s/^(\w{4})(?:\(([^()]*(?:\([^()]+\)[^()]*)*)\))/$1/
1539 169 0 0 $update and not $tr
1541 135 18 15 @_ == 2 and not defined $_[1]
1718 0 0 0 $self->have_id3v2_frame_by_descr($tag) and not $forceframe
2145 4 0 0 $set and $_ .= "__set"
2164 196 73 55 $upto and $upto ne "]"
269 55 0 $upto and $upto ne "]" and $upto ne "}"
2165 196 128 0 $upto and not defined $upto
324 0 0 $upto and not defined $upto and $skip
2169 17 307 527 $cnt-- and $upto ? $upto eq "]" ? $_[1] =~ s/^((?:[^%\\\]]|(?:\\\\)*\\\]|\\+[^\\\]]|\\\\)+)|$pat_rx//os : $_[1] =~ s/^((?:[^%\\\}]|(?:\\\\)*\\\}|\\+[^\\\}]|\\\\)+)|$pat_rx//os : $_[1] =~ s/^([^%]+)|$pat_rx//os
2176 101 63 73 $upto and $upto eq "]"
101 0 63 $upto and $upto eq "}"
2185 285 5 0 $skip and $what ne "{"
2187 54 235 1 $what eq "{" and $_[1] =~ s/^([dD])(\d+)}//
54 235 0 $what eq "{" and $_[1] =~ s/^U(\d+)}//
54 175 60 $what eq "{" and $_[1] =~ s/^($longer_f|[mMS]L|SML)}//o
54 12 163 $what eq "{" and $_[1] =~ s/^(!)?(([talgcynfFeEABDNvLrqQSmsCpouMHwh]|ID3v[12]|ID3v2-modified|$longer_f|U\d+)(:|\|\|?)|$frame_bra)//o
54 12 0 $what eq "{" and $_[1] =~ s/^ID3v1}//
54 12 0 $what eq "{" and $_[1] =~ s/^(sh|nm)P\[//s
54 7 5 $what eq "{" and $_[1] =~ s/^I\((\w+)\)//s
54 6 1 $what eq "{" and $_[1] =~ s/^T\[([^\[\]]*)\]\}//s
2210 0 0 2 @handlers and @handlers == @_handlers
2216 126 2 0 @handlers and $have_bra
2230 96 0 2 $skip || $nonesuch and $_[1] =~ s/^\}//
2245 2 0 10 defined $_ && length $_
2253 37 0 28 $delim ne ':' && $delim
2254 37 28 0 $alt and $neg
2257 30 14 21 $simple and 2 >= length $simple || $simple =~ /^U/
2276 37 14 14 $alt and $alt ne "||"
2287 23 14 13 $alt and $have
37 6 7 $alt and $have and not $simple
2294 26 11 13 $have and $alt
2296 0 50 0 $str and ref $str
50 0 0 $str and ref $str and exists $str->{'_Data'}
2336 0 0 0 not $skip and $self->{'ID3v2'}
2360 0 0 0 $v2 and not exists $v2->{'frameIDs'}
2364 0 0 0 $v2 and not exists $v2->{'frameIDs'}
2379 269 3 0 defined $maxwidth and length $str > $maxwidth
2469 4 0 0 $e = $self->get_config("decode_encoding_files") and $e->[0]
2590 39 3 0 $min and $min ne 1
2610 0 0 0 $fail and not my($o) = $self->process_handlers($id, $_[1], $_[2])
2618 46 0 0 $code eq "y" and $self->get_config("year_is_timestamp")->[0]
2669 0 0 0 @handlers and @handlers == @_handlers
2673 23 0 0 @handlers and $have_bra
2689 0 24 21 !ref($_) && (1 == length $_ || 3 >= length $_ && exists $trans{$_})
2723 35 0 0 wantarray and @a
2828 41 0 0 $e and $e->[0]
3104 36 15 0 not $c++ and $f =~ /^=>(\w)$/
3133 25 2 4 $what eq 's' || $what eq '{SL}' and grep $have{$_}, ("H", "m", "mL")
18 5 4 $what eq "{mL}" and $have{'H'}
3136 28 0 3 $what eq "%{ML}" and grep $have{$_}, ("H", "m", "mL", "s", "S", "SL")
3137 22 4 5 $what eq "%{SML}" and grep $have{$_}, ("H", "m", "mL")
3174 0 14 0 @wr == 1 and not $wr[0] =~ /\D/
3252 0 9 22 not $force2 and $mp3->{'ID3v1'}->fits_tag($data)
9 17 5 not $force2 and $mp3->{'ID3v1'}->fits_tag($data) and not exists $mp3->{'ID3v2'}
26 0 5 not $force2 and $mp3->{'ID3v1'}->fits_tag($data) and not exists $mp3->{'ID3v2'} and $do_length < 2
3272 26 0 0 $do_length and not $mp3->have_id3v2_frame("TLEN")
3316 0 36 37 length $genre and not $genre =~ /\D/
3341 2 0 82 exists $self->{'filename'} and defined $self->{'filename'}

or 2 conditions

line l !l condition
607 2 282 shift() || []
656 0 282 +($self->get_config("translate_$elt") || [])->[0] || sub { $_[1]; }
681 0 5 +($self->get_config("translate_$tr") || [])->[0] || sub { $_[1]; }
745 0 0 !$lazy && $self->_mime_type || 'application/octet-stream'
797 0 0 +($self->get_config("translate_$elt") || $self->get_config('translate_person') || [])->[0] || sub { $_[1]; }
1205 2 17 $self->{'config'} ||= {%MP3::Tag::Implemenation::config}
1264 2547 70 $self->{'config'} ||= {%MP3::Tag::Implemenation::config}
1331 0 0 $self->{'userdata'} ||= []
1339 0 0 $self->{'userdata'} ||= []
1527 0 169 $self->get_config('translate_person') || []
1540 0 169 $tr ||= sub { $_[1]; }
1623 0 0 $f_ids ||= [keys %{$from->get_frame_ids;}]
1658 0 0 $self->get_config('short_person') || []
1674 0 0 $self->get_config('translate_person') || []
1709 0 0 $v = $self->$1 or next
1721 0 0 $v = $self->$1 or next
2208 33 130 $lang_or_packages || ''
2257 14 30 $simple || ''
2262 0 0 do { {} unless $self->{'ID3v2'} }->{'modified'} || ''
2368 0 0 $v2 && $v2->{'modified'} || ''
2381 0 0 $1 or ""
2382 0 0 $1 or ""
2667 2 21 $4 || ''
2714 3 42 $h{$k} ||= []
3280 36 35 $how || 0
3281 36 35 $how || 0

or 3 conditions

line l !l&&r !l&&!r condition
101 0 0 6 $force_enc || ($ENV{'LANG'} || '') =~ /\.([-\w]+)$/i && ($i_enc = $1, 1)
103 0 0 6 $force_enc || ($ENV{'LANG'} || '') =~ /\.([-\w]+)$/i && ($o_enc = $1, 1)
117 0 0 6 defined $ENV{'MP3TAG_DECODE_FILES_DEFAULT'} || defined $ENV{'MP3TAG_DECODE_DEFAULT'}
230 87 0 0 -f $filename or -c $filename
256 0 0 88 $skip_weaken or not eval { do { require Scalar::Util; &Scalar::Util::weaken($self->[0]); 1 } }
303 85 0 0 $self->{'__proxy'}[0] or $ENV{'MP3TAG_TEST_WEAKEN'}
610 284 0 0 $self->{'__proxy'}[0] or $ENV{'MP3TAG_TEST_WEAKEN'}
646 0 282 0 $self->get_config($what) || $self->get_config('autoinfo')
676 20 0 0 $self->{'__proxy'}[0] or $ENV{'MP3TAG_TEST_WEAKEN'}
1329 0 0 0 $self->{'__proxy'}[0] or $ENV{'MP3TAG_TEST_WEAKEN'}
1358 6 0 0 @_ or exists $self->{'ID3v2'}
1512 0 0 1 @_ <= 3 or not defined $_[3]
1522 0 0 7 @_ <= 1 or @_ <= 2 and not defined $_[1]
1541 1 59 109 @_ > 2 or @_ == 2 and not defined $_[1]
1552 0 0 0 not defined $val or $val eq $nval
1705 0 0 0 $self->{'ID3v2'} or $forceframe
1719 0 0 0 $force{$tag} or $self->{'ID3v2'}
0 0 0 $force{$tag} or $self->{'ID3v2'} or $forceframe
2167 128 179 17 $upto || !defined($upto)
2210 35 126 2 $delim or $id =~ /^[A-Z]{3}[A-Z\d](\d\d)?\b/
161 2 0 $delim or $id =~ /^[A-Z]{3}[A-Z\d](\d\d)?\b/ or @handlers and @handlers == @_handlers
2225 2 94 2 @handlers or $self->{'ID3v2'}
94 0 2 @handlers or $self->{'ID3v2'} or $neg
2230 1 1 96 $skip || $nonesuch
2257 21 0 14 2 >= length $simple || $simple =~ /^U/
2274 2 13 50 $skip || !$alt && ($neg ? $have : !$have)
2329 5 1 0 $self->{'ID3v2'} or $skip
2411 17 128 0 not $upto or $upto eq "]" ? $_[1] =~ s/^\]// : $_[1] =~ s/^\}//
2669 23 0 0 $id =~ /^[A-Z]{3}[A-Z\d](\d\d)?\b/ or @handlers and @handlers == @_handlers
2705 35 0 0 @{$pattern->[2];} or $pattern->[3]
3053 0 0 0 $self->{'mp3info'} or $self->{'filename'} =~ /\.mp[23]$/i
3116 0 15 6 $what eq "m" or $what eq "{mL}"
3118 4 0 11 int $time / 3600 || !grep($have{$_}, ('m', 'mL', 's', 'S', 'SL', 'SML'))
3121 9 0 6 int $time / 60 || !grep($have{$_}, ('s', 'S', 'SL', 'SML'))
3133 0 6 25 $what eq 's' || $what eq '{SL}'
4 13 14 $what eq 's' || $what eq '{SL}' and grep $have{$_}, ("H", "m", "mL") or $what eq "{mL}" and $have{'H'}
3301 12 0 2 $genre_num eq 255 or $genre_num eq ""
3308 18 9 61 $prefer_num or $genre =~ /\D/