Condition Coverage

blib/lib/Image/ExifTool/WriteXMP.pl
Criterion Covered Total %
condition 245 379 64.6


and 3 conditions

line !l l&&!r l&&r condition
99 0 0 0 $et->{'XmpValidate'} and @$propList > 2
100 0 0 0 $propList->[0] =~ /^x:x[ma]pmeta$/ and $propList->[1] eq "rdf:RDF"
0 0 0 $propList->[0] =~ /^x:x[ma]pmeta$/ and $propList->[1] eq "rdf:RDF" and $propList->[2] =~ /rdf:Description( |$)/
108 0 0 0 $propList->[-2] eq "rdf:Alt" and $attr
110 0 0 0 $lang and @$propList >= 5
222 1368 0 0 &FixUTF8($valPtr) and not $et->{'WarnBadUTF8'}
231 8 0 9 $format eq "rational" and $$valPtr eq 'inf' || $$valPtr eq 'undef' || &Image::ExifTool::IsRational($$valPtr)
333 2006 2253 102 $tagInfo->{'Writable'} and $tagInfo->{'Writable'} eq "lang-alt"
338 99 0 3 $tagInfo->{'List'} and $tagInfo->{'List'} ne 1
345 3918 0 443 $listType and $listType ne 1
348 119 133 27 $parentID && ($tagTablePtr->{$parentID} && $tagTablePtr->{$parentID}{'NoSubStruct'} || length $parentID > 500)
4082 27 252 $strTable and not $parentID && ($tagTablePtr->{$parentID} && $tagTablePtr->{$parentID}{'NoSubStruct'} || length $parentID > 500)
383 0 0 1167 defined $val and @$propList > 2
384 1 0 1166 $propList->[0] =~ /^x:x[ma]pmeta$/ and $propList->[1] eq "rdf:RDF"
1 0 1166 $propList->[0] =~ /^x:x[ma]pmeta$/ and $propList->[1] eq "rdf:RDF" and $propList->[2] =~ /$rdfDesc( |$)/
0 0 1 $propList->[0] eq "rdf:RDF" and $propList->[1] =~ /$rdfDesc( |$)/
445 0 4 26 defined $post and length $post
0 4 0 defined $val and length $val
588 0 0 0 $dataPt and $$dataPt
783 27 77 26 not defined $dirLen and $dataPt
814 17 0 59 $success and not $et->{'XMP_ERROR'}
829 0 0 0 $success and $success eq 1
850 40 36 0 $xmpFile and $et->GetNewValue("ForceWrite")
866 0 36 0 $tagInfo and $et->{'NEW_VALUE'}{$tagInfo}
869 0 0 0 defined $newVal and length $newVal
881 115 15 0 %{$et->{'DEL_GROUP'};} and grep(/^XMP-.+$/, keys %{$$et{'DEL_GROUP'};}) || grep(m[^http://ns.exiftool.(?:ca|org)/], values %nsUsed)
894 0 63 84 $nsUsed{$ns} and @g = $nsUsed{$ns} =~ m[^http://ns.exiftool.(?:ca|org)/(.*?)/(.*?)/]
899 0 10 7 $del->{'XML-*'} and not $$del{"-$ucg"}
902 19 0 25 $$del{$g[0]} and not $$del{"-$grp"}
907 10 9 27 $del->{'XMP-*'} and not $$del{"-$ucg"}
933 4697 16 0 $writeGroup and $writeGroup ne $et->{'NEW_VALUE'}{$tagInfo}{'WriteGroup'}
984 1 2448 11616 ref $info eq "HASH" and $info->{'Struct'}
2448 8080 3536 ref $info eq "HASH" and $info->{'Struct'} and !@fixInfo || $fixInfo[0] ne $info
990 2085 2279 217 @fixInfo and $isStruct
1030 6 0 1 $ok2 and $#matchProps > $#fixProps
1037 5 2 0 $capture{$fixed} and $match ne $fixed
1054 4 0 1 $ok2 and not $match =~ /^$ok2$/
1073 53 109 7 $delLangPath and $delLangPath eq $path
1099 30 138 49 not $existed || $nvHash->{'IsCreating'} and $tagInfo->{'Avoid'}
1101 213 2 2 $existed and $nvHash->{'CreateOnly'}
1123 24 14 22 $langPathPat and $path =~ /^$langPathPat$/
1142 19 18 13 $oldLang eq "x-default" and not $tagInfo->{'LangCode'}
6 0 31 $tagInfo->{'LangCode'} and not $delLang
1195 82 61 0 $path =~ m[^(.*)/] and $capture{"$1/rdf:type"}
1214 0 0 7 $writable eq "lang-alt" and %langsHere
1251 3 0 8 $overwrite and $writable eq "lang-alt"
3 6 2 $overwrite and $writable eq "lang-alt" and !$tagInfo->{'LangCode'} || $tagInfo->{'LangCode'} eq 'x-default'
1284 0 1861 2596 not $cap and $isCreating
1379 16 0 3 $maxDataLen and $dataPt
16 0 3 $maxDataLen and $dataPt and defined $$dataPt
0 3 0 $maxDataLen and $dataPt and defined $$dataPt and length $$dataPt > $maxDataLen
1383 0 0 0 $dataPt and defined $$dataPt
1406 73 2 36 $maxDataLen and @pathList
1509 310 0 5 $et->{'XMP_NO_XMPMETA'} and @ns
310 1 4 $et->{'XMP_NO_XMPMETA'} and @ns and $nsCur{$ns[0]} =~ m[^http://ns.exiftool.(?:ca|org)/]
1529 0 632 139 $prop ne $rdfDesc and !($propList[$n + 1] =~ /^rdf:/) || $propList[$n + 1] eq 'rdf:type' && $n + 1 == $#propList
1553 1843 34 0 $val eq "" and $prop2 =~ /:~dummy~$/
1557 1858 0 19 defined $resFlag[$#curPropList] and not %$attrs
1858 0 19 defined $resFlag[$#curPropList] and not %$attrs and not $val =~ /
1604 0 0 0 $dirInfo->{'InPlace'} == 2 && $len > $dirLen
110 0 0 $dirInfo->{'InPlace'} and not $dirInfo->{'InPlace'} == 2 && $len > $dirLen
1629 111 0 0 $debug > 1 and $long[-2]

or 2 conditions

line l !l condition
112 0 0 $et->{'XmpValidateLangAlt'} || ($et->{'XmpValidateLangAlt'} = {})
401 631 527 $attrs || {}
596 0 0 $dirInfo->{'DirStart'} || 0
806 1 0 $et->GetNewValue($et->{'NEW_VALUE'}{$tagInfo}) || ''
815 0 17 $et->{'XMP_ERROR'} || 'Error parsing XMP'
845 14 61 $et->{'XmpAbout'} || ''
1068 2645 2066 $tagInfo->{'Writable'} || ''
1072 25 144 $tagInfo->{'LangCode'} || 'x-default'
1121 60 0 $attrs->{'xml:lang'} || 'x-default'
1154 3 0 $tagInfo->{'Writable'} || ''
1293 16 57 $tagInfo->{'LangCode'} || 'x-default'
1383 0 0 &Write($dirInfo->{'OutFile'}, $$dataPt) or return -1

or 3 conditions

line l !l&&r !l&&!r condition
100 0 0 0 $propList->[0] ne "rdf:RDF" or not $propList->[1] =~ /rdf:Description( |$)/
146 101 0 28 $val =~ /(\d{4}):(\d{2}):(\d{2}) (\d{2}:\d{2}(?::\d{2}(?:\.\d*)?)?)(.*)/ or $val =~ /(\d{4})-(\d{2})-(\d{2})T(\d{2}:\d{2}(?::\d{2}(?:\.\d*)?)?)(.*)/
211 1155 3 1352 not $format or $format eq "string"
1158 214 1138 not $format or $format eq "string" or $format eq "lang-alt"
229 270 112 756 $format eq "rational" or $format eq "real"
231 0 9 0 $$valPtr eq 'inf' || $$valPtr eq 'undef' || &Image::ExifTool::IsRational($$valPtr)
365 9 8 &Image::ExifTool::IsFloat($$valPtr) or $format eq "rational" and $$valPtr eq 'inf' || $$valPtr eq 'undef' || &Image::ExifTool::IsRational($$valPtr)
256 0 43 26 not $$valPtr or $$valPtr =~ /false/i
43 0 26 not $$valPtr or $$valPtr =~ /false/i or $$valPtr =~ /^no$/i
26 0 0 $$valPtr ne "true" or not $convType
26 0 0 $$valPtr ne "true" or not $convType or $convType eq "PrintConv"
257 0 43 0 not $$valPtr or $$valPtr ne "false"
43 0 0 not $$valPtr or $$valPtr ne "false" or not $convType
43 0 0 not $$valPtr or $$valPtr ne "false" or not $convType or $convType eq "PrintConv"
292 2635 1791 0 $structPtr || $tagTablePtr
327 43 4318 0 $tagInfo->{'Namespace'} || $table->{'NAMESPACE'}
359 538 7 2635 $Image::ExifTool::XMP::specialStruct{$tag} or $strTable->{$tag}{'LangCode'}
445 26 0 4 defined $post and length $post or defined $val and length $val
513 0 11474 15453 not defined $ns or $nsUsed->{$ns}
779 36 34 60 $xmpFile || $et->{'PreferredGroup'} && $et->{'PreferredGroup'} eq 'XMP'
809 36 40 54 $xmpFile or $dirLen
820 0 0 17 $success or not $raf->Seek(0, 2)
0 0 17 $success or not $raf->Seek(0, 2) or $raf->Tell
881 12 0 3 grep(/^XMP-.+$/, keys %{$$et{'DEL_GROUP'};}) || grep(m[^http://ns.exiftool.(?:ca|org)/], values %nsUsed)
899 0 7 10 $del->{$ucg} or $del->{'XML-*'} and not $$del{"-$ucg"}
902 23 44 0 $del->{$grp} or $$del{$g[0]} and not $$del{"-$grp"}
907 17 37 9 $del->{$ucg} or $del->{'XMP-*'} and not $$del{"-$ucg"}
961 1 1 4711 $path eq "rdf:about" or $path eq "x:xmptk"
977 217 2279 2085 $isStruct or defined $tagInfo->{'Flat'}
984 2496 2488 6632 !@fixInfo || $fixInfo[0] ne $info
1033 6 9 4 $matchProps[$i] =~ / \d+$/ or $matchProps[$i] eq $fixProps[$i]
1037 0 0 7 $fixed{$fixed} or $capture{$fixed} and $match ne $fixed
1057 2 2 0 $capture{$path} || $capture{$fixed[0]}
1099 4 26 187 $existed || $nvHash->{'IsCreating'}
1100 2 119 96 $deleted or $added
121 96 0 $deleted or $added or $et->IsOverwriting($nvHash)
1179 120 17 6 $writable ne "lang-alt" or $oldLang eq $newLang
1201 118 3 5 @delPaths or $tagInfo->{'List'}
3 4 1 @delPaths or $tagInfo->{'List'} or $addLang
1212 3 4 0 $tagInfo->{'List'} or $oldLang
1251 1 1 6 !$tagInfo->{'LangCode'} || $tagInfo->{'LangCode'} eq 'x-default'
1280 822 2014 1870 $nvHash->{'IsCreating'} || ($isStruct || $preferred && !defined($nvHash->{'Shift'})) && !$tagInfo->{'Avoid'} && !$nvHash->{'EditOnly'}
1284 120 129 4457 $deleted or defined $added
249 2596 1861 $deleted or defined $added or not $cap and $isCreating
1379 111 0 19 $changed or $maxDataLen and $dataPt and defined $$dataPt and length $$dataPt > $maxDataLen
1417 0 14 287 $extendedRes{$lastProp} or $extendedRes{$lastNS}
14 0 287 $extendedRes{$lastProp} or $extendedRes{$lastNS} or $propSize > $newDescThresh
1456 0 0 0 not $xmpErr or $err ne $xmpErr
1483 1 12 0 $nsUsed{$ns2} || $Image::ExifTool::XMP::nsURI{$ns2}
1529 135 4 632 !($propList[$n + 1] =~ /^rdf:/) || $propList[$n + 1] eq 'rdf:type' && $n + 1 == $#propList
1553 3 0 1877 $dummy or $val eq "" and $prop2 =~ /:~dummy~$/
1604 35 6 69 $compact{'NoPadding'} || $xmpFile || $dirInfo->{'ReadOnly'}
1624 107 0 4 %capture or $xmpFile
107 0 4 %capture or $xmpFile or $dirInfo->{'InPlace'}
0 1 3 %capture or $xmpFile or $dirInfo->{'InPlace'} or $dirInfo->{'NoDelete'}

xor 4 conditions

line l&&r l&&!r !l&&r !l&&!r condition
690 0 0 0 0 $i xor $start >= $extStart