Condition Coverage

blib/lib/DBIx/Class/ResultSet.pm
Criterion Covered Total %
condition 268 375 71.4


and 2 conditions

line l !l condition
655 36578 2404 ref $_ eq 'ARRAY' && !@$_ || ref $_ eq 'HASH' && !keys(%$_) and $_ = undef
2326 21329 1 $$rel_info{$_->{'name'}} && (ref $data->[$i][$_->{'pos'}] eq 'ARRAY' || ref $data->[$i][$_->{'pos'}] eq 'HASH' || defined &blessed($data->[$i][$_->{'pos'}]) && $data->[$i][$_->{'pos'}]->isa($DBIx::Class::ResultSource::__expected_result_class_isa || emit_loud_diag('confess', 1, 'msg', 'Global $DBIx::Class::ResultSource::__expected_result_class_isa unexpectedly unset...'))) && 1
2398 9 7 $rel_info->{$_} && (ref $data->[$i]{$_} eq 'ARRAY' || ref $data->[$i]{$_} eq 'HASH' || defined &blessed($data->[$i]{$_}) && $data->[$i]{$_}->isa($DBIx::Class::ResultSource::__expected_result_class_isa || emit_loud_diag('confess', 1, 'msg', 'Global $DBIx::Class::ResultSource::__expected_result_class_isa unexpectedly unset...'))) && 1

and 3 conditions

line !l l&&!r l&&r condition
442 1668 7957 0 @_ == 2 and !defined($_[0]) || length ref $_[0]
469 7806 7406 0 not grep({not $safe{$_};} keys %$call_attrs) and !defined($call_cond) || ref $call_cond eq 'HASH' && !keys(%$call_cond) || ref $call_cond eq 'ARRAY' && !@$call_cond
485 0 7262 7950 $call_attrs and keys %$call_attrs
593 604 1644 0 @$as and not @$sel
1555 89 0 $pref and $attrs->{'_dark_selector'}
608 659 3 5 ref $_ eq 'HASH' and exists $_->{'-as'}
21 0 641 not ref $_ and $_ =~ /^ [^\s\(\)]+ $/x
705 1 0 0 @bind and ref $bind[-1] eq 'HASH'
780 1317 6 67 @_ > 1 && ref $_[-1] eq 'HASH'
821 1240 7 38 length ref $call_cond->{$key} and +($rel_list ||= {map({$_, 1;} $rsrc->relationships)})->{$key}
7 0 38 length ref $call_cond->{$key} and +($rel_list ||= {map({$_, 1;} $rsrc->relationships)})->{$key} and not &is_literal_value($call_cond->{$key})
7 15 23 length ref $call_cond->{$key} and +($rel_list ||= {map({$_, 1;} $rsrc->relationships)})->{$key} and not &is_literal_value($call_cond->{$key}) and ref(my $foreign_val = delete $call_cond->{$key}) ne 'ARRAY'
876 808 334 8 $self->{'attrs'}{'accessor'} and $self->{'attrs'}{'accessor'} eq 'single'
1204 0 0 0 @_ > 1 && ref $_[-1] eq 'HASH'
1308 6848 1973 35 not $fetch_all || $attrs->{'order_by'} and $attrs->{'collapse'}
1973 0 35 not $fetch_all || $attrs->{'order_by'} and $attrs->{'collapse'} and my(@pcols) = $rsrc->primary_columns
1349 0 8 11 $attrs->{'order_by'} && $rsrc->schema->storage->_extract_colinfo_of_stable_main_source_order_by_portion($attrs)
1375 7611 6 231 $attrs->{'collapse'} and my $aliastypes = $attrs->{'_last_sqlmaker_alias_map'}
1391 2173 0 6 ref $sel eq 'REF' and ref $$sel eq 'ARRAY'
1400 1003 1143 36 $multiplied_selectors->{$sel} and not $attrs->{'as'}[$i] =~ /\./
1424 4540 15 98 !$self->{'_result_inflator'}{'is_core_row'} && $inflator_cref == \&DBIx::Class::ResultClass::HashRefInflator::inflate_result
1429 4 0 7479 $self->{'_result_inflator'}{'is_core_row'} and @$rows < 60
1530 1318 6481 3 not $fetch_all and @$rows > 1
1581 30241 2 0 $self->{'cursor'} and $self->{'cursor'}{'_pos'}
1614 570 42 15 @_ and defined $_[0]
1633 514 24 13 $rows and $rows < $count
1728 537 7 12 ref $sel eq 'HASH' and $sel->{'-as'}
1739 3 0 0 defined $sql_maker->{'quote_char'} and length $sql_maker->{'quote_char'}
1773 39 101 3 $colpiece =~ /\./ and not $colpiece =~ /^$attrs->{'alias'}\./
1927 5 576 30 not $needs_subq and @{$attrs->{'from'};} > 1
2254 0 0 7767 ref $_[0] eq 'ARRAY' && (@{$_[0];} || (return)) && (ref $_[0][0] eq 'HASH' || ref $_[0][0] eq 'ARRAY') && $_[0]
2318 0 22026 0 $$colinfo{$data->[0][$_]} = {'pos', $_, 'name', $data->[0][$_]} and push @$colnames, $data->[0][$_]
2353 5 0 0 defined &blessed($_) and $_->isa($DBIx::Class::ResultSource::__expected_result_class_isa || emit_loud_diag('confess', 1, 'msg', 'Global $DBIx::Class::ResultSource::__expected_result_class_isa unexpectedly unset...'))
2425 17 0 1 defined &blessed($_) and $_->isa($DBIx::Class::ResultSource::__expected_result_class_isa || emit_loud_diag('confess', 1, 'msg', 'Global $DBIx::Class::ResultSource::__expected_result_class_isa unexpectedly unset...'))
2671 0 825 0 &reftype($new) eq 'HASH' and not keys %$new
825 0 0 &reftype($new) eq 'HASH' and not keys %$new and &blessed($new)
2772 1318 0 0 $extra_checks{'-join'} and ref $attrs->{'from'} eq 'ARRAY'
1318 0 0 $extra_checks{'-join'} and ref $attrs->{'from'} eq 'ARRAY' and @{$attrs->{'from'};} > 1
2868 3 0 1 @_ > 1 && ref $_[-1] eq 'HASH'
2870 0 2 2 keys %$hash and my $row = $self->find($hash, $attrs)
3037 25 0 5 @_ > 1 && ref $_[-1] eq 'HASH'
3039 0 23 7 keys %$hash and my $row = $self->find($hash, $attrs)
3103 9 0 4 @_ > 1 && ref $_[-1] eq 'HASH'
3166 0 0 2 @_ > 1 && ref $_[-1] eq 'HASH'
3221 2 790 0 defined $data and ref $data ne 'ARRAY'
3572 176 29 0 $attrs->{'from'} and ref $attrs->{'from'} ne 'ARRAY'
3659 9018 45 0 $attrs->{'collapse'} and $attrs->{'distinct'}
3769 684 2 48 $attrs->{'seen_join'} && keys %{$$attrs{'seen_join'};}
3792 8577 132 353 defined $attrs->{'prefetch'} and $prefetch = $self->_merge_joinpref_attr({}, delete $attrs->{'prefetch'})
3798 353 0 0 defined $attrs->{'collapse'} and not $attrs->{'collapse'}
3832 0 54 335 $t->{'-alias'} and $t->{'-alias'} eq $alias
3902 0 1848 0 push @{$$attrs{'select'};}, $_->[0] and push @{$$attrs{'as'};}, $_->[1]
4139 144 1 1 $to_serialize->{'pager'} and ref $to_serialize->{'pager'}{'total_entries'} eq 'CODE'
4165 1 0 65 ref $self and my $rsrc = $self->result_source

or 2 conditions

line l !l condition
320 21 5 $attrs->{'rows'} ||= 10
323 16097 14131 $attrs->{'alias'} ||= 'me'
821 6 39 $rel_list ||= {map({$_, 1;} $rsrc->relationships)}
1233 0 14 $self->{'attrs'}{'offset'} || 0
1268 13 52 $self->{'all_cache_position'} ||= 0
1418 4647 0 \&DBIx::Class::Row::inflate_result || die(q[No ::Row::inflate_result() - can't happen])
1476 229 0 do { package DBIx::Class::__GENERATED_ROW_PARSER__; eval $self->{'_row_parser'}{$parser_type}{'src'} } || die($@)
1845 1318 287 $self->_construct_results('fetch_all') || []
2531 0 9 $main_proto ||= {%$rs_data, map({$_, $sl->{$_};} @$colnames)}
2597 16 0 $attrs->{'rows'} ||= 10
2710 1422 7 $eqs->{$_} || ''
3458 835 0 +(+(shift())->{'attrs'} || {})->{'alias'} || 'me'
3746 1631 7431 $attrs->{'from'} ||= [{'-rsrc', $source, '-alias', $self->{'attrs'}{'alias'}, $self->{'attrs'}{'alias'}, $source->from}]
3754 565 169 delete $attrs->{'join'} || {}
3886 36 316 $attrs->{'seen_join'}{'-relation_chain_depth'} || 0
3891 529 0 $j->[0]{'-relation_chain_depth'} || 0
3896 164 475 $p->{$_} ||= {}
3920 1 14 $attrs->{'offset'} || 0

or 3 conditions

line l !l&&r !l&&!r condition
339 1511 28717 0 $attrs->{'result_class'} || $source->result_class
442 1456 6499 2 !defined($_[0]) || length ref $_[0]
459 0 0 2 not defined $_[$i] or length ref $_[$i]
469 135 0 5559 !defined($call_cond) || ref $call_cond eq 'HASH' && !keys(%$call_cond) || ref $call_cond eq 'ARRAY' && !@$call_cond
509 270 2346 60968 exists $old_attrs->{$_} or exists $call_attrs->{$_}
587 1520 148711 0 $attrs->{$key} || ()
593 1644 604 74054 @$as || @$sel
655 0 4737 34245 ref $_ eq 'ARRAY' && !@$_ || ref $_ eq 'HASH' && !keys(%$_)
708 0 1 0 $attr || ()
915 1853 1142 0 $ci ||= $rsrc->columns_info
1060 6958 3833 0 $self->{'cursor'} ||= do { my $attrs = $self->_resolved_attrs; $self->result_source->schema->storage->select($attrs->{'from'}, $attrs->{'select'}, $attrs->{'where'}, $attrs) }
1308 1625 5223 2008 $fetch_all || $attrs->{'order_by'}
1364 1630 2439 4779 $did_fetch_all or @{[] unless $rows;}
1366 72 4707 0 $cursor ||= $self->cursor
1379 293 53 87 $aliastypes->{'multiplying'}{$sel_alias} or $aliastypes->{'premultiplied'}{$sel_alias}
1407 3158 4654 0 $self->{'_result_inflator'}{'cref'} ||= do { $self->throw_exception("Inflator $res_class does not provide an inflate_result() method") unless $res_class->can('inflate_result') }
1474 53 165 11 $self->{'_result_inflator'}{'is_hri'} || $self->{'_result_inflator'}{'is_core_row'}
1492 189 26 62 $did_fetch_all || !$attrs->{'collapse'}
1510 12 12 0 !defined($self->{'_stashed_rows'}[0][$_]) || length $self->{'_stashed_rows'}[0][$_] < 50
1760 0 3 0 $1 || $2 || $3
1768 3 140 0 $sel_index->{$_} || $_
1920 2 3 606 defined $existing_group_by || ref $attrs->{'from'} ne 'ARRAY' || $self->_has_resolved_attr('rows', 'offset')
1941 0 10 569 ref $attrs->{'from'}[0] ne 'HASH' || ref $attrs->{'from'}[0]{$attrs->{'from'}[0]{'-alias'}}
32 10 569 $needs_subq ||= ref $attrs->{'from'}[0] ne 'HASH' || ref $attrs->{'from'}[0]{$attrs->{'from'}[0]{'-alias'}}
1957 42 0 0 $rsrc->_identifying_column_set || $self->throw_exception(sprintf(q[Unable to perform complex resultset %s() without an identifying set of columns on source '%s'], $op, $rsrc->source_name))
1989 2 8 11 $existing_group_by or keys %{{} unless $join_classifications->{'multiplying'};}
2326 3 1 103705 $_->{'is_rel'} ||= $$rel_info{$_->{'name'}} && (ref $data->[$i][$_->{'pos'}] eq 'ARRAY' || ref $data->[$i][$_->{'pos'}] eq 'HASH' || defined &blessed($data->[$i][$_->{'pos'}]) && $data->[$i][$_->{'pos'}]->isa($DBIx::Class::ResultSource::__expected_result_class_isa || emit_loud_diag('confess', 1, 'msg', 'Global $DBIx::Class::ResultSource::__expected_result_class_isa unexpectedly unset...'))) && 1
2353 0 0 0 $DBIx::Class::ResultSource::__expected_result_class_isa || emit_loud_diag('confess', 1, 'msg', 'Global $DBIx::Class::ResultSource::__expected_result_class_isa unexpectedly unset...')
2380 0 1 7 $$colinfo{$colnames->[$_]}{'seen_null'} ||= !defined($data->[$i][$_])
2387 127 97 0 $colinfo->{$_} ||= do { $self->throw_exception("Column '${_}' must be present in supplied explicit column list") if $data_start; push @$colnames, $_; +{'pos', $#$colnames, 'name', $_} }
2398 5 7 212 $colinfo->{$_}{'is_rel'} ||= $rel_info->{$_} && (ref $data->[$i]{$_} eq 'ARRAY' || ref $data->[$i]{$_} eq 'HASH' || defined &blessed($data->[$i]{$_}) && $data->[$i]{$_}->isa($DBIx::Class::ResultSource::__expected_result_class_isa || emit_loud_diag('confess', 1, 'msg', 'Global $DBIx::Class::ResultSource::__expected_result_class_isa unexpectedly unset...'))) && 1
2425 1 0 0 $DBIx::Class::ResultSource::__expected_result_class_isa || emit_loud_diag('confess', 1, 'msg', 'Global $DBIx::Class::ResultSource::__expected_result_class_isa unexpectedly unset...')
2451 0 1 31 $colinfo->{$_}{'seen_null'} ||= !defined($data->[$i]{$_})
2552 1 9 0 $main_proto_rs ||= $rsrc->resultset->search_rs($main_proto)
2657 0 0 827 @_ > 2 or ref $values ne 'HASH'
2716 1393 1613 8772 $implied_data || ()
3572 0 9 196 $attrs->{'from'} and ref $attrs->{'from'} ne 'ARRAY' or $self->_has_resolved_attr(@force_subq_attrs)
3666 0 0 137 $attrs->{'offset'} =~ /[^0-9]/ or $attrs->{'offset'} < 0
3670 0 1 1717 $attrs->{'rows'} =~ /[^0-9]/ or $attrs->{'rows'} <= 0
3684 10194 96 16896 $attrs->{$_} or $$attrs{"+$_"}
3714 1457 694 35153 ref $_ || $_ =~ /\./
3749 565 169 8328 $attrs->{'join'} or $attrs->{'prefetch'}
3782 2987 2 0 $attrs->{$attr} || ()
3830 0 39 15 $is_multi ||= !$t->{'-is_single'}
3833 3 10 41 $attrs->{'_main_source_premultiplied'} ||= $is_multi
3837 10 230 95 $attrs->{'_main_source_premultiplied'} or grep {not $_->[0]{'-is_single'};} @fromlist
3909 239 146 8676 $attrs->{'collapse'} || grep({$_ =~ /\./;} @{$$attrs{'as'};})
4024 778 16 71 $best_candidate->{'score'} == 0 or exists $seen_keys->{$import_key}
4046 17207 192 0 $hm ||= do { require Hash::Merge; my $hm = 'Hash::Merge'->new; $hm->specify_behavior({'SCALAR', {'SCALAR', sub { my($defl, $defr) = map({defined $_;} @_[0, 1]); if ($defl xor $defr) { return [$defl ? $_[0] : $_[1]]; } elsif (not $defl) { return []; } else { return [$_[0], $_[1]]; } ; } , 'ARRAY', sub { return $_[1] unless defined $_[0]; '???'; return [$_[0], @{$_[1];}]; } , 'HASH', sub { return [] unless defined $_[0] or keys %{$_[1];}; return [$_[1]] unless defined $_[0]; return [$_[0]] unless keys %{$_[1];}; return [$_[0], $_[1]]; } }, 'ARRAY', {'SCALAR', sub { return $_[0] unless defined $_[1]; '???'; return [@{$_[0];}, $_[1]]; } , 'ARRAY', sub { return $_[1] unless my(@ret) = @{$_[0];}; return [@ret, @{$_[1];}]; my(%idx) = map({$_, 1;} @ret); push @ret, grep({not defined $idx{$_};} @{$_[1];}); \@ret; } , 'HASH', sub { return [$_[1]] unless @{$_[0];}; return $_[0] unless keys %{$_[1];}; '???'; return [@{$_[0];}, $_[1]]; } }, 'HASH', {'SCALAR', sub { return [] unless keys %{$_[0];} or defined $_[1]; return [$_[0]] unless defined $_[1]; return [$_[1]] unless keys %{$_[0];}; return [$_[0], $_[1]]; } , 'ARRAY', sub { return [] unless keys %{$_[0];} or @{$_[1];}; return [$_[0]] unless @{$_[1];}; return $_[1] unless keys %{$_[0];}; '???'; return [$_[0], @{$_[1];}]; } , 'HASH', sub { return [] unless keys %{$_[0];} or keys %{$_[1];}; return [$_[0]] unless keys %{$_[1];}; return [$_[1]] unless keys %{$_[0];}; return [$_[0]] if $_[0] eq $_[1]; return [$_[0], $_[1]]; } }}, 'DBIC_RS_ATTR_MERGER'); $hm }
4074 0 882 1 defined $_[0] or keys %{$_[1];}
4102 0 0 0 keys %{$_[0];} or defined $_[1]
4108 0 0 0 keys %{$_[0];} or @{$_[1];}
4115 0 0 0 keys %{$_[0];} or keys %{$_[1];}

xor 4 conditions

line l&&r l&&!r !l&&r !l&&!r condition
659 3929 13158 1443 961 defined $left xor defined $right
3969 270 17 27 10 defined $a xor defined $b
4055 0 0 74 0 $defl xor $defr