Condition Coverage

blib/lib/File/KDBX.pm
Criterion Covered Total %
condition 158 308 51.3


and 3 conditions

line !l l&&!r l&&r condition
33 62 0 0 @_ == 1 and &blessed($_[0])
62 0 0 @_ == 1 and &blessed($_[0]) and $_[0]->isa($class)
221 310 115 0 @_ == 1 and XXX
298 0 0 2 $root->name eq $temp->name && $root->is_expanded ^ $temp->is_expanded && $root->notes eq $temp->notes && !@{$root->entries;} && !defined($root->custom_icon_uuid) && !keys(%{$root->custom_data;}) && $root->icon_id == $temp->icon_id && $root->expires ^ $temp->expires && $root->default_auto_type_sequence eq $temp->default_auto_type_sequence && !defined($root->enable_auto_type) && !defined($root->enable_searching)
351 5 0 1 not $group and $self->recycle_bin_enabled
548 123 0 0 @_ == 1 and XXX
583 177 0 0 @_ == 1 and XXX
649 1 0 17 $wanted and $search_in
1 0 17 $wanted and $search_in and nonempty($text)
1084 0 129 1 defined $string->{'value'} and $string->{'value'} =~ /$fieldref_match/

or 2 conditions

line l !l condition
38 0 62 $data // {}
140 2061 92 $_[0]{'headers'} //= scalar &$default($_[0])
141 332 92 $_[0]{'inner_headers'} //= scalar &$default($_[0])
142 1891 83 $_[0]{'meta'} //= scalar &$default($_[0])
143 26 83 $_[0]{'binaries'} //= scalar &$default($_[0])
144 96 62 $_[0]{'deleted_objects'} //= scalar &$default($_[0])
145 0 62 $_[0]{'raw'} //= undef
150 48 62 $_[0]->headers->{'cipher_id'} //= scalar &$default($_[0])
152 14 62 $_[0]->headers->{'master_seed'} //= scalar &$default($_[0])
154 62 62 $_[0]->headers->{'encryption_iv'} //= scalar &$default($_[0])
155 14 62 $_[0]->headers->{'stream_start_bytes'} //= scalar &$default($_[0])
162 288 62 $_[0]->headers->{'kdf_parameters'} //= scalar &$default($_[0])
173 0 62 $_[0]->meta->{'database_name_changed'} //= scalar &$default($_[0])
175 0 62 $_[0]->meta->{'database_description_changed'} //= scalar &$default($_[0])
177 0 62 $_[0]->meta->{'default_username_changed'} //= scalar &$default($_[0])
180 0 62 $_[0]->meta->{'master_key_changed'} //= scalar &$default($_[0])
184 163 63 $_[0]->meta->{'custom_icons'} //= scalar &$default($_[0])
187 0 62 $_[0]->meta->{'recycle_bin_changed'} //= scalar &$default($_[0])
189 0 62 $_[0]->meta->{'entry_templates_group_changed'} //= scalar &$default($_[0])
194 0 62 $_[0]->meta->{'settings_changed'} //= scalar &$default($_[0])
222 248 62 $self->{'meta'}{'memory_protection'} //= {}
511 4 1 shift() // (return)
549 60 62 $self->{'meta'}{'custom_data'} //= {}
576 0 0 $self->custom_data(@_) // (return)
584 114 63 $self->{'headers'}{'public_custom_data'} //= {}
641 18 0 shift() // (return)
852 1 5 $_->custom_icon_uuid // ""
890 2 0 ($args{'max_items'} // $self->history_max_items) // 10
891 2 0 ($args{'max_size'} // $self->history_max_size) // 6291456
892 2 0 ($args{'max_age'} // $self->maintenance_history_days) // 365
974 75 0 $self->kdf_parameters->{'$UUID'} // ""
1059 6 0 $object->{'uuid'} // (return)
1062 6 0 $meta->{'recycle_bin_uuid'} // ""
1063 6 0 $meta->{'entry_templates_group'} // ""
1064 6 0 $meta->{'last_selected_group'} // ""
1065 6 0 $meta->{'last_top_visible_group'} // ""
1074 13 0 shift() // (return)
1081 0 26 $_->{'previous_parent_group'} // ""
1096 1 0 shift() // (return)
1099 1 0 $meta->{'recycle_bin_uuid'} // ""
1100 1 0 $meta->{'entry_templates_group'} // ""
1101 1 0 $meta->{'last_selected_group'} // ""
1102 1 0 $meta->{'last_top_visible_group'} // ""
1105 0 2 $_->{'last_top_visible_entry'} // ""
1106 0 2 $_->{'previous_parent_group'} // ""
1109 0 3 $_->{'previous_parent_group'} // ""

or 3 conditions

line l !l&&r !l&&!r condition
80 0 1 0 $KEYS{$self} // ()
0 1 0 $SAFE{$self} // ()
137 97 62 0 $_[0]{'sig1'} //= $default
138 118 62 0 $_[0]{'sig2'} //= $default
139 690 61 0 $_[0]{'version'} //= $default
148 0 0 62 $_[0]->headers->{'comment'} //= $default
151 2 62 0 $_[0]->headers->{'compression_flags'} //= $default
170 0 0 62 $_[0]->meta->{'generator'} //= $default
171 0 0 62 $_[0]->meta->{'header_hash'} //= $default
172 0 0 62 $_[0]->meta->{'database_name'} //= $default
174 0 0 62 $_[0]->meta->{'database_description'} //= $default
176 0 0 62 $_[0]->meta->{'default_username'} //= $default
178 0 62 0 $_[0]->meta->{'maintenance_history_days'} //= $default
179 0 0 62 $_[0]->meta->{'color'} //= $default
181 0 62 0 $_[0]->meta->{'master_key_change_rec'} //= $default
182 0 62 0 $_[0]->meta->{'master_key_change_force'} //= $default
185 7 62 0 $_[0]->meta->{'recycle_bin_enabled'} //= $default
186 7 62 0 $_[0]->meta->{'recycle_bin_uuid'} //= $default
188 0 62 0 $_[0]->meta->{'entry_templates_group'} //= $default
190 0 62 0 $_[0]->meta->{'last_selected_group'} //= $default
191 0 62 0 $_[0]->meta->{'last_top_visible_group'} //= $default
192 2 62 0 $_[0]->meta->{'history_max_items'} //= $default
193 2 62 0 $_[0]->meta->{'history_max_size'} //= $default
198 0 0 62 $_[0]->memory_protection->{'protect_title'} //= $default
199 0 0 62 $_[0]->memory_protection->{'protect_username'} //= $default
200 0 62 0 $_[0]->memory_protection->{'protect_password'} //= $default
201 0 0 62 $_[0]->memory_protection->{'protect_url'} //= $default
202 0 0 62 $_[0]->memory_protection->{'protect_notes'} //= $default
241 1 1 9 $_->{'name'} || nonempty($_->{'last_modification_time'})
246 1 2 156 $_->previous_parent_group || nonempty($_->tags || &any(sub { nonempty($_->{'last_modification_time'}); } , values %{$_->custom_data;}))
252 1 1 24 $_->previous_parent_group || defined $_->quality_check && !$_->quality_check || &any(sub { nonempty($_->{'last_modification_time'}); } , values %{$_->custom_data;})
275 616 62 0 $self->{'root'} //= $self->_implicit_root
408 0 15 0 delete $args{'group'} // $self->root
426 0 136 0 delete $args{'base'} // $self->root
440 0 20 0 delete $args{'group'} // $self->root
458 0 209 0 delete $args{'base'} // $self->root
469 0 108 0 delete $args{'base'} // $self->root
484 0 0 0 $args{'uuid'} or $args{'data'}
494 0 0 0 &first(sub { $_->{'uuid'} eq $uuid; } , @{$self->custom_icons;}) // do { push @{$self->custom_icons;}, my $i = {"uuid", $uuid}; $i }
523 0 9 0 $args{'uuid'} // generate_uuid()
554 1 0 0 $args{'key'} or $args{'value'}
615 0 0 11 $uuid eq "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" or $uuid eq "0000000000000000"
767 2 0 4 $string->{'protect'} // $self->memory_protection($string_key)
890 0 2 0 $args{'max_items'} // $self->history_max_items
891 0 2 0 $args{'max_size'} // $self->history_max_size
892 2 0 0 $args{'max_age'} // $self->maintenance_history_days
940 0 176 0 $params //= $self->kdf_parameters
943 176 0 0 $params || !defined($params->{'$UUID'})
954 158 0 0 $params->{'S'} //= $self->transform_seed
955 158 0 0 $params->{'R'} //= $self->transform_rounds
968 85 0 0 $self->headers->{'kdf_parameters'}{$param} //= &random_bytes(32)
974 3 72 0 $File::KDBX::KDF::ROUNDS_INFO{$self->kdf_parameters->{'$UUID'} // ""} // $File::KDBX::KDF::DEFAULT_ROUNDS_INFO
979 74 1 0 $self->headers->{'kdf_parameters'}{$info->{'p'}} //= $info->{'d'}
987 0 46 0 $args{'uuid'} //= $self->cipher_id
988 0 46 0 $args{'iv'} //= $self->encryption_iv
999 0 18 0 delete $args{'id'} // $self->inner_random_stream_id
0 18 0 $args{'stream_id'} //= delete $args{'id'} // $self->inner_random_stream_id
1000 0 18 0 $args{'key'} //= $self->inner_random_stream_key
1011 9 62 0 $self->headers->{'inner_random_stream_id'} //= do { my $version = $self->minimum_version; $version < 262144 ? 2 : 3 }
17 71 0 $self->inner_headers->{'inner_random_stream_id'} //= ($self->headers->{'inner_random_stream_id'} //= do { my $version = $self->minimum_version; $version < 262144 ? 2 : 3 })
1028 9 62 0 $self->headers->{'inner_random_stream_key'} //= &random_bytes(64)
39 71 0 $self->inner_headers->{'inner_random_stream_key'} //= ($self->headers->{'inner_random_stream_key'} //= &random_bytes(64))