Condition Coverage

blib/lib/Test2/Mock.pm
Criterion Covered Total %
condition 62 75 82.6


and 2 conditions

line l !l condition
160 9 4 $stash->{'AUTOLOAD'} and *{$stash->{'AUTOLOAD'};}{"CODE"}
162 9 2 $stash->{'can'} and *{$stash->{'can'};}{"CODE"}

and 3 conditions

line !l l&&!r l&&r condition
301 2 0 13 $ref and @$ref
345 11 6 115 ref $arg and &reftype($arg) eq "CODE"
350 2 6 9 defined $arg and not ref $arg
8 3 6 defined $arg and not ref $arg and $arg =~ /^(rw|ro|wo)$/
364 2 4 0 $val and $is
409 1 2 1 $sig eq "&" and $class->can($sym)
413 63 79 2 $add and $orig
142 0 2 $add and $orig and &reftype($orig) ne 'SCALAR' || defined $$orig
420 139 0 3 $self->{'_track'} and $sig eq "&"
467 1 0 2 $ref and @$ref
488 1 0 127 $ref and @$ref

or 2 conditions

line l !l condition
26 0 85 $self->{'sub_tracking'} ||= {}
27 0 85 $self->{'call_tracking'} ||= []
169 10 1 eval qq[package $class;\n#line $line "$file (Generated AUTOLOAD)"\nour \$AUTOLOAD;\n sub {\n my (\$self) = \@_;\n my (\$pkg, \$name) = (\$AUTOLOAD =~ m/^(.*)::([^:]+)\$/g);\n \$AUTOLOAD = undef;\n\n return if \$name eq 'DESTROY';\n my \$sub = sub {\n my \$self = shift;\n (\$self->{\$name}) = \@_ if \@_;\n return \$self->{\$name};\n };\n\n \$c->add(\$name => \$sub);\n\n if (\$c->{_track}) {\n my \$call = {sub_name => \$name, sub_ref => \$sub, args => [\@_]};\n push \@{\$c->{sub_tracking}->{\$name}} => \$call;\n push \@{\$c->{call_tracking}} => \$call;\n }\n\n goto &\$sub;\n }\n] || die("Failed generating AUTOLOAD sub: $@")
198 10 0 eval qq[package $class;\n#line $line "$file (Generated can)"\nuse Scalar::Util 'reftype';\n sub {\n my (\$self, \$meth) = \@_;\n if (\$self->SUPER::can(\$meth)) {\n return \$self->SUPER::can(\$meth);\n }\n elsif (ref \$self && reftype \$self eq 'HASH' && exists \$self->{\$meth}) {\n return sub { shift->\$meth(\@_) };\n }\n return undef;\n }\n] || die("Failed generating can method: $@")
401 48 63 $self->{'_symbols'} ||= {}
417 9 133 $$syms{"$sig$sym"} ||= []
500 58 0 $self->{'_symbols'} || (return)

or 3 conditions

line l !l&&r !l&&!r condition
136 4 1 1 $NEW{$type} || croak("'${type}' is not a known constructor type")
147 7 1 1 $NEW{$type} || croak("'${type}' is not a known constructor type")
359 2 4 0 delete $arg->{'field'} || $param
366 2 4 0 $is ||= $val ? "val" : "rw"
409 61 79 7 $orig or $add
140 3 4 $orig or $add or $set
82 1 3 $orig or $add or $set or $sig eq "&" and $class->can($sym)
413 1 1 0 &reftype($orig) ne 'SCALAR' || defined $$orig