Condition Coverage

lib/File/Information/Base.pm
Criterion Covered Total %
condition 79 311 25.4


and 2 conditions

line l !l condition
805 16 0 not defined $info->{'towards'} and defined $pv->{$key} and scalar keys %{$$pv{$key};}

and 3 conditions

line !l l&&!r l&&r condition
239 6 24 34 !defined($pv->{$key}) || ref $pv->{$key} eq 'HASH' && !scalar(%{$pv->{$key};}) and defined(my $loader = $info->{'loader'})
296 12 22 26 not defined $res and defined $rawtype
34 26 0 not defined $res and defined $rawtype and defined(my $raw = $v->{'raw'})
297 0 0 0 $rawtype eq "unixts" and $as eq "DateTime"
0 0 0 $rawtype eq "unixts" and $as eq "Data::Identifier"
0 0 0 $rawtype eq "ise" and defined(my $re = $_ise_re{$as})
0 0 0 $_data_identifier_keys{$rawtype} and $as eq "Data::Identifier"
0 0 0 $_ise_keys{$rawtype} and $as eq "Data::URIID::Result"
0 0 0 $rawtype eq "filename" and $as eq "File::Information::Link"
0 0 0 $rawtype eq "filename" and $as eq 'IO::Handle' || $as eq 'IO::File'
0 0 0 exists $_ise_re{$rawtype} and $as eq "Data::TagDB::Tag"
0 0 0 exists $_ise_re{$rawtype} and $as eq "Data::TagDB::Tag" and $self->instance->db
320 0 0 0 defined $res and not $as =~ /^IO::/u
323 12 48 0 not defined $res and builtin::blessed($v->{'raw'})
328 12 48 0 not defined $res and $as eq "sid"
60 0 0 not defined $res and $as eq "sid" and defined(my $identifier = $v->{'Data::Identifier'})
333 12 22 26 not defined $res || defined $v->{'ise'} and defined $rawtype
34 10 16 not defined $res || defined $v->{'ise'} and defined $rawtype and $rawtype eq "ise"
339 66 70 8 defined $rawtype and $rawtype eq $key
136 8 0 defined $rawtype and $rawtype eq $key and defined($v->{'ise'} = $v->{'raw'})
342 12 48 0 not defined $res || defined $v->{'ise'} and ($rawtype // "") eq "mediatype"
350 88 104 0 defined $rawtype and $rawtype eq $source_type
192 0 0 defined $rawtype and $rawtype eq $source_type and defined(my $obj = $v->{'raw'})
359 12 48 0 not defined $res and defined(my $ise = $v->{'ise'})
360 0 0 0 $as eq "Data::TagDB::Tag" and $self->instance->db
379 0 0 0 defined $res and not $as =~ /^IO::/u
406 0 0 0 not wantarray and scalar @algos != 1
441 0 0 0 not defined $value and $lifecycle eq "current"
0 0 0 not defined $value and $lifecycle eq "current" and $self->isa("File::Information::Inode")
0 0 0 not defined $value and $lifecycle eq "current" and $self->isa("File::Information::Inode") and not $opts{'no_defaults'}
445 0 0 0 defined $size and $limit == -1 || $size <= $limit
727 0 0 0 $type eq "v0" and length $mark
753 0 0 8 defined $info and defined $info->{'sources'}
777 0 0 0 defined $value and eval {
783 0 0 0 defined $value and not ref $value
0 0 0 defined $value and not ref $value and $value =~ /$re/u
784 0 0 0 defined $pv->{$key} and defined $info->{'towards'}
798 0 0 0 defined $value_ref and defined $pv->{$key}
0 0 0 defined $value_ref and defined $pv->{$key} and defined $info->{'towards'}
805 0 16 0 not defined $info->{'towards'} and defined $pv->{$key}
922 0 0 0 ref $pv_final->{$key} eq "ARRAY" and scalar @{$pv_final->{$key};} == 1
972 4 0 0 defined $pv_final->{'store_final'} and $pv_final->{'store_final'}{'raw'}
1008 0 0 0 $as eq "Data::Identifier" and not scalar keys %opts

or 2 conditions

line l !l condition
212 4 0 $self->{'properties'} //= {}
222 60 4 $self->{'properties_values'} //= {}
233 0 12 $info->{'default_as'} // "raw"
234 52 12 $opts{'lifecycle'} //= "current"
236 60 4 $pv->{$lifecycle} //= {}
244 26 38 $pv->{$key} //= {}
342 26 22 $rawtype // ""
343 0 0 $v->{'raw'} // ""
423 0 0 $opts{'as'} // "hex"
424 0 0 $opts{'lifecycle'} //= "current"
569 0 0 $base->digest($algo, "as", "utag", "default", undef, "lifecycle", $lifecycle, "no_defaults", !$_important_digests{$algo}) // (next)
589 0 0 $contentise{$l} // (next)
675 0 0 $as // ""
735 0 0 $self->{'digest'} //= {}
738 0 0 $self->{'digest'}{$lifecycle} //= {}
749 8 0 $self->{'properties_values'} //= {}
8 0 ($self->{'properties_values'} //= {})->{$opts{'lifecycle'}} //= {}
811 4 0 $self->{'properties_values'} //= {}
4 0 ($self->{'properties_values'} //= {})->{$opts{'lifecycle'}} //= {}
829 0 8 $self->get($option, %opts, "default", undef, "as", "raw") // (next)
839 0 0 $self->{'properties_values'} //= {}
0 0 ($self->{'properties_values'} //= {})->{$opts{'lifecycle'}} //= {}
849 0 0 $self->{'properties_values'} //= {}
0 0 +($self->{'properties_values'} //= {})->{'current'} //= {}
850 0 0 $self->{'properties_values'} //= {}
0 0 +($self->{'properties_values'} //= {})->{'final'} //= {}
868 0 0 $self->get($key, "as", "Data::TagDB::Tag", "default", undef) // (next)
876 0 0 $pv_current->{'data_tagdb_displayname'} //= []
881 0 0 $final_metadata{$key} // (next)
884 0 0 $pv_final->{$key} //= []
890 0 0 $final_relation{$key} // (next)
893 0 0 $pv_final->{$key} //= []
905 0 0 $pv_final->{'data_tagdb_size'} //= []
937 4 0 $self->{'properties_values'} //= {}
4 0 +($self->{'properties_values'} //= {})->{'current'} //= {}
938 4 0 $self->{'properties_values'} //= {}
0 4 +($self->{'properties_values'} //= {})->{'final'} //= {}
939 0 4 $self->{'digest'}{'final'} //= {}
945 0 0 $pv_final->{'store_size'} //= []
946 0 0 $pv_final->{'store_inode'} //= []
947 0 0 $pv_final->{'store_mediasubtype'} //= []
948 0 0 $pv_final->{'store_contentise'} //= []
949 0 0 $pv_final->{'store_inodeise'} //= []
951 0 0 $pv_final->{'store_final'} //= []

or 3 conditions

line l !l&&r !l&&!r condition
220 20 20 24 $self->{'properties'}{$key} // $_properties{$key}
233 52 12 0 $opts{'as'} //= $info->{'default_as'} // "raw"
239 44 14 6 !defined($pv->{$key}) || ref $pv->{$key} eq 'HASH' && !scalar(%{$pv->{$key};})
290 0 34 26 $v->{'rawtype'} // $rawtype
297 0 0 0 $as eq 'IO::Handle' || $as eq 'IO::File'
333 12 0 48 defined $res || defined $v->{'ise'}
336 12 0 48 defined $res or defined $v->{'ise'}
342 12 0 48 defined $res || defined $v->{'ise'}
345 12 0 48 defined $res or defined $v->{'ise'}
428 0 0 0 $_digest_name_converter{fc $key} // $key
445 0 0 0 $limit == -1 || $size <= $limit
485 0 0 0 $as eq "base64" or $as eq "b64"
528 0 0 0 $opts{'subobjects'} // ref $self
551 0 0 0 $base //= $self->inode
625 0 0 0 $base //= $self->filesystem
689 0 0 0 $self->{'extractor'} //= $self->instance->extractor(@args)
695 0 0 0 $self->{'db'} //= $self->instance->db(@args)
715 0 0 0 $cache->{$uuid} //= "Data::Identifier"->new("uuid", $uuid)
729 0 0 0 $given_size //= $size
740 0 0 0 $digests->{$algo} //= $digest{$algo}
774 0 0 0 $_ise_re{$func} // croak("BUG")
819 0 0 4 $v ||= $inode->get("stat_readonly", %opts, "default", undef, "as", "raw")
820 0 0 4 $v ||= $inode->get("ntfs_file_attribute_readonly", %opts, "default", undef, "as", "raw")
823 0 0 4 $v ||= $self->get("writemode", %opts, "default", "", "as", "uuid") eq "7b177183-083c-4387-abd3-8793eb647373"
824 0 0 4 $v ||= $self->get("finalmode", %opts, "default", "", "as", "uuid") eq "f418cdb9-64a7-4f15-9a18-63f7755c5b47"
830 0 0 0 $value =~ /^ro(?:,.+)?$/u || $value =~ /,ro$/u
0 0 0 $v ||= $value =~ /^ro(?:,.+)?$/u || $value =~ /,ro$/u
910 0 0 0 $given_size //= $size_values[0]

xor 4 conditions

line l&&r l&&!r !l&&r !l&&!r condition
785 0 0 0 0 $value xor $info->{'towards'}
799 0 0 0 0 $value_ref->{'raw'} xor $info->{'towards'}