Condition Coverage

blib/lib/DBIx/Class/ResultSet.pm
Criterion Covered Total %
condition 246 355 69.3


and 2 conditions

line l !l condition
656 41078 2412 ref $_ eq 'ARRAY' && !@$_ || ref $_ eq 'HASH' && !keys(%$_) and $_ = undef
1459 989 0 not defined $_->[$i] and push @violating_idx, $i and next COL
2300 21137 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::Row')) && 1
2350 9 7 $rel_info->{$_} && (ref $data->[$i]{$_} eq 'ARRAY' || ref $data->[$i]{$_} eq 'HASH' || defined &blessed($data->[$i]{$_}) && $data->[$i]{$_}->isa('DBIx::Class::Row')) && 1

and 3 conditions

line !l l&&!r l&&r condition
440 3446 8441 0 @_ == 2 and !defined($_[0]) || ref $_[0] ne ''
467 8286 9188 0 not &List::Util::first(sub { not $safe{$_}; } , keys %$call_attrs) and !defined($call_cond) || ref $call_cond eq 'HASH' && !keys(%$call_cond) || ref $call_cond eq 'ARRAY' && !@$call_cond
483 0 9039 8435 $call_attrs and keys %$call_attrs
593 599 1636 0 @$as and not @$sel
1547 89 0 $pref and $attrs->{'_dark_selector'}
608 652 3 5 ref $_ eq 'HASH' and exists $$_{-'as'}
21 0 634 not ref $_ and $_ =~ /^ [^\s\(\)]+ $/x
706 1 0 0 @bind and ref $bind[-1] eq 'HASH'
781 1000 6 375 @_ > 1 && ref $_[$#_] eq 'HASH'
819 1235 6 33 length ref $call_cond->{$key} and my $relinfo = $rsrc->relationship_info($key)
1241 14 19 length ref $call_cond->{$key} and my $relinfo = $rsrc->relationship_info($key) and ref(my $val = delete $call_cond->{$key}) ne 'ARRAY'
842 807 333 8 $self->{'attrs'}{'accessor'} and $self->{'attrs'}{'accessor'} eq 'single'
1168 0 0 0 @_ > 1 && ref $_[$#_] eq 'HASH'
1270 6827 2000 0 not $fetch_all || $attrs->{'order_by'} and $attrs->{'collapse'}
1965 0 35 not $fetch_all || $attrs->{'order_by'} and $attrs->{'collapse'} and my(@pcols) = $rsrc->primary_columns
1311 0 8 10 $attrs->{'order_by'} && $rsrc->schema->storage->_extract_colinfo_of_stable_main_source_order_by_portion($attrs)
1337 7596 0 226 $attrs->{'collapse'} and my $aliastypes = $attrs->{'_last_sqlmaker_alias_map'}
1353 2158 0 6 ref $sel eq 'REF' and ref $$sel eq 'ARRAY'
1362 993 1138 36 $multiplied_selectors->{$sel} and not $attrs->{'as'}[$i] =~ /\./
1390 4522 13 96 !$self->{'_result_inflator'}{'is_core_row'} && $inflator_cref == (require DBIx::Class::ResultClass::HashRefInflator && 'DBIx::Class::ResultClass::HashRefInflator'->can('inflate_result'))
1395 4 0 7464 $self->{'_result_inflator'}{'is_core_row'} and @$rows < 60
1459 989 0 0 not defined $_->[$i] and push @violating_idx, $i
1510 1305 6474 3 not $fetch_all and @$rows > 1
1561 32942 2 0 $self->{'cursor'} and $self->{'cursor'}{'_pos'}
1594 565 41 15 @_ and defined $_[0]
1613 508 24 13 $rows and $rows < $count
1708 525 7 12 ref $sel eq 'HASH' and $$sel{-'as'}
1719 3 0 0 defined $sql_maker->{'quote_char'} and length $sql_maker->{'quote_char'}
1753 39 98 3 $colpiece =~ /\./ and not $colpiece =~ /^$attrs->{'alias'}\./
1903 5 578 19 not $needs_subq and @{$attrs->{'from'};} > 1
2230 0 7698 0 ref $_[0] eq 'ARRAY' && (@{$_[0];} || (return)) && (ref $_[0][0] eq 'HASH' || ref $_[0][0] eq 'ARRAY') && $_[0]
2292 0 21828 0 $$colinfo{$data->[0][$_]} = {'pos', $_, 'name', $data->[0][$_]} and push @$colnames, $data->[0][$_]
2316 5 0 0 defined &blessed($_) and $_->isa('DBIx::Class::Row')
2366 17 0 1 defined &blessed($_) and $_->isa('DBIx::Class::Row')
2602 0 1490 0 &reftype($new) eq 'HASH' and not keys %$new
1490 0 0 &reftype($new) eq 'HASH' and not keys %$new and &blessed($new)
2703 1317 0 0 $extra_checks{-'join'} and ref $attrs->{'from'} eq 'ARRAY'
1317 0 0 $extra_checks{-'join'} and ref $attrs->{'from'} eq 'ARRAY' and @{$attrs->{'from'};} > 1
2799 3 0 1 @_ > 1 && ref $_[$#_] eq 'HASH'
2801 0 2 2 keys %$hash and my $row = $self->find($hash, $attrs)
2968 25 0 5 @_ > 1 && ref $_[$#_] eq 'HASH'
2970 0 23 7 keys %$hash and my $row = $self->find($hash, $attrs)
3034 9 0 4 @_ > 1 && ref $_[$#_] eq 'HASH'
3097 0 0 2 @_ > 1 && ref $_[$#_] eq 'HASH'
3152 2 796 0 defined $data and ref $data ne 'ARRAY'
3436 192 24 0 $attrs->{'from'} and ref $attrs->{'from'} ne 'ARRAY'
3523 8924 36 0 $attrs->{'collapse'} and $attrs->{'distinct'}
3617 672 2 46 $attrs->{'seen_join'} && keys %{$$attrs{'seen_join'};}
3647 352 0 0 defined $attrs->{'collapse'} and not $attrs->{'collapse'}
3707 0 48 325 $$t{-'alias'} and $$t{-'alias'} eq $alias
3983 144 1 1 $to_serialize->{'pager'} and ref $to_serialize->{'pager'}{'total_entries'} eq 'CODE'
4009 1 0 56 ref $self and my $rsrc = $self->result_source

or 2 conditions

line l !l condition
317 21 5 $attrs->{'rows'} ||= 10
320 18353 14578 $attrs->{'alias'} ||= 'me'
1195 0 14 $self->{'attrs'}{'offset'} || 0
1230 13 52 $self->{'all_cache_position'} ||= 0
1380 4626 0 \&DBIx::Class::Row::inflate_result || die(q[No ::Row::inflate_result() - can't happen])
1822 1305 285 $self->_construct_results('fetch_all') || []
2461 0 9 $main_proto ||= {%$rs_data, map({$_, $sl->{$_};} @$colnames)}
2525 16 0 $attrs->{'rows'} ||= 10
2641 2100 7 $eqs->{$_} || ''
3332 717 0 ((shift())->{'attrs'} || {})->{'alias'} || 'me'
3594 1582 7378 $attrs->{'from'} ||= [{-'rsrc', $source, -'alias', $self->{'attrs'}{'alias'}, $self->{'attrs'}{'alias'}, $source->from}]
3602 551 169 delete $attrs->{'join'} || {}
3657 36 316 $attrs->{'seen_join'}{-'relation_chain_depth'} || 0
3662 529 0 $j->[0]{-'relation_chain_depth'} || 0
3667 164 475 $p->{$_} ||= {}
3764 1 14 $attrs->{'offset'} || 0

or 3 conditions

line l !l&&r !l&&!r condition
336 1500 31431 0 $attrs->{'result_class'} || $source->result_class
440 1442 6998 1 !defined($_[0]) || ref $_[0] ne ''
457 0 0 1 not defined $_[$i] or ref $_[$i] ne ''
467 161 0 5552 !defined($call_cond) || ref $call_cond eq 'HASH' && !keys(%$call_cond) || ref $call_cond eq 'ARRAY' && !@$call_cond
508 265 0 67199 exists $old_attrs->{$_} or exists $call_attrs->{$_}
587 1514 161484 0 $attrs->{$key} || ()
593 1636 599 80443 @$as || @$sel
620 12 9 0 $dark_sel_dumper ||= do { require Data::Dumper::Concise; Data::Dumper::Concise::DumperObject()->Indent(0) }
656 0 0 43490 ref $_ eq 'ARRAY' && !@$_ || ref $_ eq 'HASH' && !keys(%$_)
709 0 1 0 $attr || ()
831 0 0 18 $crosstable or ref $rel_cond ne 'HASH'
881 1843 1140 0 $ci ||= $self->result_source->columns_info
1024 6940 3788 0 $self->{'cursor'} ||= do { my $attrs = $self->_resolved_attrs; $self->result_source->storage->select($attrs->{'from'}, $attrs->{'select'}, $attrs->{'where'}, $attrs) }
1270 1611 5216 2000 $fetch_all || $attrs->{'order_by'}
1326 1615 0 7203 $did_fetch_all or @{[] unless $rows;}
1328 72 4699 0 $cursor ||= $self->cursor
1341 293 0 130 $aliastypes->{'multiplying'}{$sel_alias} or $aliastypes->{'premultiplied'}{$sel_alias}
1369 3154 4632 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') }
1439 51 0 172 $self->{'_result_inflator'}{'is_hri'} || $self->{'_result_inflator'}{'is_core_row'}
1488 184 26 56 $did_fetch_all || !$attrs->{'collapse'}
1740 0 0 3 $1 || $2 || $3
1748 3 0 137 $sel_index->{$_} || $_
1896 2 3 597 defined $existing_group_by || ref $attrs->{'from'} ne 'ARRAY' || $self->_has_resolved_attr('rows', 'offset')
1917 0 10 571 ref $attrs->{'from'}[0] ne 'HASH' || ref $attrs->{'from'}[0]{$attrs->{'from'}[0]{-'alias'}}
21 10 571 $needs_subq ||= ref $attrs->{'from'}[0] ne 'HASH' || ref $attrs->{'from'}[0]{$attrs->{'from'}[0]{-'alias'}}
1933 31 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))
1965 2 3 5 $existing_group_by or keys %{{} unless $join_classifications->{'multiplying'};}
2300 3 1 102952 $_->{'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::Row')) && 1
2332 0 1 7 $$colinfo{$colnames->[$_]}{'seen_null'} ||= !defined($data->[$i][$_])
2339 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', $_} }
2350 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::Row')) && 1
2381 0 1 31 $colinfo->{$_}{'seen_null'} ||= !defined($data->[$i]{$_})
2480 1 9 0 $main_proto_rs ||= $rsrc->resultset->search($main_proto)
2647 2067 1613 8677 $implied_data || ()
3436 0 9 207 $attrs->{'from'} and ref $attrs->{'from'} ne 'ARRAY' or $self->_has_resolved_attr(@force_subq_attrs)
3532 10084 96 16700 $attrs->{$_} or $$attrs{"+$_"}
3562 1445 651 35013 ref $_ || $_ =~ /\./
3597 551 0 8409 $attrs->{'join'} or $attrs->{'prefetch'}
3629 2947 2 0 $attrs->{$attr} || ()
3705 0 36 12 $is_multi ||= !$$t{-'is_single'}
3708 3 7 38 $attrs->{'_main_source_premultiplied'} ||= $is_multi
3712 7 0 318 $attrs->{'_main_source_premultiplied'} or &List::Util::first(sub { not $_->[0]{-'is_single'}; } , @fromlist)
3754 230 146 8583 $attrs->{'collapse'} || grep({$_ =~ /\./;} @{$$attrs{'as'};})
3868 778 0 87 $best_candidate->{'score'} == 0 or exists $seen_keys->{$import_key}
3890 17012 185 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 }
3918 0 0 867 defined $_[0] or keys %{$_[1];}
3946 0 0 0 keys %{$_[0];} or defined $_[1]
3952 0 0 0 keys %{$_[0];} or @{$_[1];}
3959 0 0 0 keys %{$_[0];} or keys %{$_[1];}

xor 4 conditions

line l&&r l&&!r !l&&r !l&&!r condition
659 3921 15412 1444 968 defined $left xor defined $right
3813 270 17 27 10 defined $a xor defined $b
3899 0 0 72 0 $defl xor $defr