Condition Coverage

lib/Getopt/Class.pm
Criterion Covered Total %
condition 109 299 36.4


and 2 conditions

line l !l condition
381 0 32 $def->{'alias'} and scalar @{$def->{'alias'};}
422 6 0 not defined $Nice::Try::WANTARRAY and scalar @Nice::Try::LAST_VAL
425 0 0 not defined $Nice::Try::WANTARRAY and scalar @Nice::Try::LAST_VAL

and 3 conditions

line !l l&&!r l&&r condition
88 72 0 42 $def->{'type'} eq "boolean" and not exists $def->{'mirror'}
92 42 0 0 substr($k, 0, 5) eq "with_" and not exists $$dict{"without_" . substr($k, 5)}
36 0 6 substr($k, 0, 8) eq "without_" and not exists $$dict{"with_" . substr($k, 8)}
30 0 6 substr($k, 0, 7) eq "enable_" and not exists $$dict{"disable_" . substr($k, 7)}
24 0 6 substr($k, 0, 8) eq "disable_" and not exists $$dict{"enable_" . substr($k, 8)}
131 0 0 18 exists $def->{'default'} and defined $def->{'default'}
188 132 0 0 index($k, "-") != -1 and $k eq $k2_dash
196 0 114 18 not ref $def->{'alias'} and length $def->{'alias'}
214 48 0 84 defined $def->{'default'} and ref $def->{'default'} || length $def->{'default'}
223 18 0 18 $def->{'type'} eq "code" and ref $def->{'code'} eq "CODE"
240 60 0 0 exists $def->{'code'} and ref $def->{'code'} eq "CODE"
60 0 0 exists $def->{'code'} and ref $def->{'code'} eq "CODE" and ref($opts->{$k2_under} // "") ne "CODE"
288 120 12 0 $def->{'re'} and ref $def->{'re'} ne "Regexp"
306 1 0 0 scalar @_ and $self->_is_hash($_[0])
319 4 0 0 not !$p->{'required'} and $def->{'required'}
321 0 0 0 $def->{'type'} =~ /^(?:boolean|decimal|integer|string)/ and not length $v->{$f}
0 0 0 $def->{'type'} eq 'hash' || $def->{'type'} eq 'string-hash' and not scalar keys %{$$v{$f};}
0 0 0 $def->{'type'} eq "array" and not scalar @{$v->{$f};}
329 3 0 0 $def->{'type'} eq "decimal" and not $v->{$f} =~ /^\d+(\.\d{1,12})?$/
331 1 0 0 $def->{'type'} eq "string" and length $v->{$f}
1 0 0 $def->{'type'} eq "string" and length $v->{$f} and not $v->{$f} =~ /$def->{'re'}/
363 2 2 0 scalar keys %$classes and not exists $classes->{$class}
417 6 0 0 $INC{'threads.pm'} and not exists $INC{'forks.pm'}
422 6 0 0 defined $Nice::Try::WANT and length $Nice::Try::WANT
425 0 0 0 defined $Nice::Try::WANT and length $Nice::Try::WANT
0 6 0 defined $Nice::Try::WANTARRAY || defined $Nice::Try::BREAK && $Nice::Try::BREAK eq 'return' and !&Scalar::Util::blessed($Nice::Try::RETVAL[0]) || &Scalar::Util::blessed($Nice::Try::RETVAL[0]) && !$Nice::Try::RETVAL[0]->isa('Nice::Try::SENTINEL')
0 0 0 defined $Nice::Try::WANT and length $Nice::Try::WANT
0 0 0 defined $Nice::Try::RETVAL[0] and $Nice::Try::RETVAL[0] eq "__NEXT__"
0 0 0 defined $Nice::Try::RETVAL[0] and $Nice::Try::RETVAL[0] eq "__LAST__"
0 0 0 defined $Nice::Try::RETVAL[0] and $Nice::Try::RETVAL[0] eq "__REDO__"
0 0 0 defined $Nice::Try::BREAK and $Nice::Try::BREAK eq "return"
0 6 0 scalar @Nice::Try::VOID and !&Scalar::Util::blessed($Nice::Try::VOID[0]) || &Scalar::Util::blessed($Nice::Try::VOID[0]) && !$Nice::Try::VOID[0]->isa('Nice::Try::SENTINEL')
476 0 1 0 exists $opts->{$key} and !(defined $opts->{$key} && length $opts->{$key}) || $opts->{$key} =~ /^[[:blank:]]*$/ || ref $opts->{$key} eq 'SCALAR' && (!length(${$opts->{$key};}) || ${$opts->{$key};} =~ /^[[:blank:]]*$/) || ref $opts->{$key} eq 'ARRAY' && !scalar(@{$opts->{$key};})
535 1 0 0 scalar @_ and $self->_is_hash($_[0])
574 105 0 2 $def->{'type'} eq 'date' || $def->{'type'} eq 'datetime' and length $opts->{$k}
591 18 33 3 exists $def->{'mirror'} and exists $def->{'mirror'}{'value'}
677 6 0 6 $call_offset > 0 and $call_data[0] ne $class
6 0 6 $call_offset > 0 and $call_data[0] ne $class and (caller $call_offset - 1)[0] eq $class
682 0 0 0 $call_offset > 0 and (caller $call_offset - 1)[0] ne $class
708 10 0 0 exists $def->{'type'} && defined $def->{'type'}
0 0 0 $self->_is_object($self->{$f}) and $self->{$f}->isa("Module::Generic::Boolean")
928 6 0 12 $call_offset > 0 and $call_data[0] ne $class
6 12 0 $call_offset > 0 and $call_data[0] ne $class and (caller $call_offset - 1)[0] eq $class
934 0 0 0 $call_offset > 0 and (caller $call_offset - 1)[0] ne $class
1010 150 10 92 $enabled and exists $aliases->{$key}

or 2 conditions

line l !l condition
39 6 0 shift @_ || (return $self->error('No hash parameter was provided.'))
47 6 0 $param->{'dictionary'} || (return $self->error('No dictionary was provided to initiate Getopt::Long'))
71 6 0 tie(%options, 'Getopt::Class::Alias', {'dict', $dict, 'aliases', $self->{'aliases'}}) || (return $self->error('Unable to get a Getopt::Class::Alias tie object: ', 'Getopt::Class::Alias'->error))
240 0 0 $opts->{$k2_under} // ""
303 1 0 shift @_ || (return $self->error('No class was provided to return its definition'))
307 1 0 $self->class($class) || (return)
308 1 0 $self->get_class_values($class) || (return)
318 0 4 $def->{'error'} ||= "does not match requirements"
359 4 0 shift @_ || (return $self->error('No class was provided to return its definition'))
416 6 0 $self->getopt || (return $self->error('No Getopt::Long::Parser object found.'))
450 6 0 $self->getopt || (return $self->error('No Getopt::Long object found.'))
454 6 0 tied %$opts || (return $self->error('Unable to get the tie object for the options value hash.'))
521 6 0 'Getopt::Class::Values'->new({'data', $opts, 'dict', $dict, 'aliases', $aliases, 'debug', $self->{'debug'}}) || (return $self->pass_error('Getopt::Class::Values'->error))
528 1 0 shift @_ || (return $self->error('No class was provided to return its definition'))
530 1 0 $self->class($class) || (return)
538 1 3 &Scalar::Util::reftype($opts->{$f}) // ""
941 6 0 $bitmask // 0
943 6 0 $opts->{'dict'} || (return 'Getopt::Class::Alias'->error('No dictionary was provided to Getopt::Class:Alias'))
975 0 6 $opts->{'debug'} || 0
1034 92 0 $val // ""
1040 69 0 $val // ""
69 0 $val // ""

or 3 conditions

line l !l&&r !l&&!r condition
123 0 0 18 $self->_is_scalar($def->{'default'}) || $self->_is_code($def->{'default'}) || ref $def->{'default'}
214 60 24 0 ref $def->{'default'} || length $def->{'default'}
223 6 0 96 $def->{'type'} eq "array" or $def->{'type'} eq "file-array"
0 6 0 $def->{'type'} eq "date" or $def->{'type'} eq "datetime"
235 6 0 0 exists $def->{'min'} or exists $def->{'max'}
321 0 0 0 $def->{'type'} eq 'hash' || $def->{'type'} eq 'string-hash'
0 0 0 $def->{'type'} =~ /^(?:boolean|decimal|integer|string)/ and not length $v->{$f} or $def->{'type'} eq 'hash' || $def->{'type'} eq 'string-hash' and not scalar keys %{$$v{$f};}
0 0 0 $def->{'type'} =~ /^(?:boolean|decimal|integer|string)/ and not length $v->{$f} or $def->{'type'} eq 'hash' || $def->{'type'} eq 'string-hash' and not scalar keys %{$$v{$f};} or $def->{'type'} eq "array" and not scalar @{$v->{$f};}
425 6 0 0 defined $Nice::Try::WANTARRAY || defined $Nice::Try::BREAK && $Nice::Try::BREAK eq 'return'
0 0 6 !&Scalar::Util::blessed($Nice::Try::RETVAL[0]) || &Scalar::Util::blessed($Nice::Try::RETVAL[0]) && !$Nice::Try::RETVAL[0]->isa('Nice::Try::SENTINEL')
0 0 0 not defined $Nice::Try::BREAK or $Nice::Try::BREAK eq "return"
0 0 6 !&Scalar::Util::blessed($Nice::Try::VOID[0]) || &Scalar::Util::blessed($Nice::Try::VOID[0]) && !$Nice::Try::VOID[0]->isa('Nice::Try::SENTINEL')
476 0 0 0 !(defined $opts->{$key} && length $opts->{$key}) || $opts->{$key} =~ /^[[:blank:]]*$/ || ref $opts->{$key} eq 'SCALAR' && (!length(${$opts->{$key};}) || ${$opts->{$key};} =~ /^[[:blank:]]*$/) || ref $opts->{$key} eq 'ARRAY' && !scalar(@{$opts->{$key};})
571 107 0 25 length $opts->{$k} or $def->{'default'}
574 0 2 105 $def->{'type'} eq 'date' || $def->{'type'} eq 'datetime'
0 6 93 $def->{'type'} eq "hash" or $def->{'type'} eq "string-hash"
7 0 18 $def->{'type'} eq "integer" or $def->{'decimal'}
653 0 6 0 ref $that || $that
661 6 0 0 ref $self || $self
682 6 0 0 $call_data[9] or $call_offset > 0 and (caller $call_offset - 1)[0] ne $class
697 10 0 0 ref $self || $self
708 0 0 0 $def->{'type'} eq "boolean" or $self->_is_object($self->{$f}) and $self->{$f}->isa("Module::Generic::Boolean")
0 0 0 $def->{'type'} eq "string" or &Scalar::Util::reftype($self->{$f}) eq "SCALAR"
0 0 0 $def->{'type'} eq "integer" or $def->{'type'} eq "decimal"
0 0 0 $def->{'type'} eq "date" or $def->{'type'} eq "datetime"
0 0 0 $def->{'type'} eq "hash" or $def->{'type'} eq "string-hash"
771 0 6 0 ref $self || $self
788 0 0 0 caller eq "Getopt::Class::Value" or not $self->{'enable'}
803 0 18 153 caller eq "Getopt::Class::Value" or not $self->{'enable'}
820 0 240 424 caller eq "Getopt::Class::Value" or not $self->{'enable'}
837 0 6 1 caller eq "Getopt::Class::Value" or not $self->{'enable'}
861 0 0 0 caller eq "Getopt::Class::Value" or not $self->{'enable'}
877 0 126 0 caller eq "Getopt::Class::Value" or not $self->{'enable'}
917 0 6 0 ref $this || $this
934 0 0 0 $call_data[9] or $call_offset > 0 and (caller $call_offset - 1)[0] ne $class
958 6 0 0 $opts->{'aliases'} || do {
1013 92 0 0 $aliases->{$key} || do {
1023 92 0 0 $def->{'alias'} || do {