Condition Coverage

lib/HTTP/Validate.pm
Criterion Covered Total %
condition 198 293 67.5


and 3 conditions

line !l l&&!r l&&r condition
771 1 1 75 defined $ruleset_name and not ref $ruleset_name
2 1 74 defined $ruleset_name and not ref $ruleset_name and $ruleset_name ne ''
1123 184 0 0 do { &reftype($rule) ne 'HASH' } && do { croak(q[The arguments to 'define_ruleset' must all be hashrefs and/or strings]) }
1216 4 135 183 defined $DIRECTIVE{$key} and $DIRECTIVE{$key} == 2
1243 2 1 0 ref $value and ref $value ne 'ARRAY'
1273 7 1 0 ref $value and ref $value ne 'Regexp'
1342 0 1 130 defined $typevalue and not ref $typevalue
1 0 130 defined $typevalue and not ref $typevalue and $typevalue ne ''
1351 39 87 6 defined $v and $VALIDATOR_DEF{$v}
1359 1 1 85 ref $v and &reftype($v) eq 'CODE'
1385 1 0 2 ref $rr->{'validators'} eq 'ARRAY' and @{$rr->{'validators'};}
1429 1 1 29 defined $typevalue and not ref $typevalue
2 0 29 defined $typevalue and not ref $typevalue and $typevalue ne ''
1443 0 0 10 defined $typevalue and ref $typevalue eq 'ARRAY'
1448 0 0 20 defined $arg and $arg ne ''
1533 159 12 1 @lines and $lines[0] =~ /^[!]/
1538 5 165 1 defined $rr and $rr->{'undocumented'}
1571 13 27 0 do { $rr->{'type'} eq 'include' if defined $rr } && do { push @{$$rs{'doc_items'};}, "=INCLUDE $rr->{'ruleset'}"; if ($body ne '') { push @{$$rs{'doc_items'};}, '=ORDINARY'; push @{$$rs{'doc_items'};}, process_doc($body) if defined $body; } }
1669 0 0 6 ref $rs and ref $rs->{'doc_items'} eq 'ARRAY'
1678 28 0 10 ref $item and defined $item->{'param'}
1712 0 0 2 $doc ne '' and $subdoc ne ''
1721 3 1 14 $doc ne '' and $item ne ''
1784 0 60 0 defined $context and !ref($context) || &reftype($context) ne 'HASH'
1808 31 0 3 ref $input_params->[0] and &reftype($input_params->[0]) eq 'HASH'
1867 78 0 0 ref $hash->{$param} and &reftype($hash->{$param}) eq 'ARRAY'
74 1 3 defined $hash->{$param} and $hash->{$param} ne ''
1869 0 0 0 ref $value && &reftype($value) eq 'ARRAY'
1878 3 0 0 ref $value && &reftype($value) eq 'ARRAY'
1900 0 0 60 defined $ruleset_name and $ruleset_name ne ''
1939 56 0 4 defined $vr->{'content_type'} and $vr->{'content_type'} ne ''
56 1 3 defined $vr->{'content_type'} and $vr->{'content_type'} ne '' and $vr->{'content_type'} ne 'unknown'
2000 0 35 47 ref $rs->{'fulfill_order'} and @{$rs->{'fulfill_order'};}
2044 169 0 1 keys %names_found > 1 and not $rr->{'multiple'}
100 69 0 not @raw_values and exists $rr->{'default'}
165 1 2 @raw_values > 1 and not $rr->{'multiple'}
2100 163 1 2 $rr->{'flag'} and keys %names_found
164 0 2 $rr->{'flag'} and keys %names_found and not @raw_values
2140 0 0 40 defined $raw_val and $raw_val ne ''
2163 4 0 67 ref $result and &reftype($result) eq 'HASH'
2175 4 42 25 ref $result and $result->{'error'}
2204 4 41 1 ref $result and $result->{'warn'}
2213 4 1 41 ref $result && exists $result->{'value'}
2249 18 1 2 defined $rr->{'bad_value'} and $rr->{'bad_value'} eq 'ERROR'
2323 7 4 1 $rr->{'type'} eq 'together' and @present > 0
11 0 1 $rr->{'type'} eq 'together' and @present > 0 and @present < @{$rr->{'param'};}
4 5 2 $rr->{'type'} eq 'at_most_one' and @present > 1
2354 16 5 1 $rr->{'require'} and not $vr->{'rs'}{$rs_name} == 2
2378 2 0 4 @fulfilled == 0 and $rr->{'constraint'} eq 'require_one' || $rr->{'constraint'} eq 'require_any'
0 2 0 @fulfilled > 1 and $rr->{'constraint'} eq 'allow_one' || $rr->{'constraint'} eq 'require_one'
2566 0 0 4 defined $value and not $value =~ /^'/
2588 0 0 46 defined $value and $value ne ''
2625 5 0 2 ref $self->{'er'} eq 'ARRAY' and @{$self->{'er'};}
2876 4 23 7 defined $min and $value < $min
2886 23 3 1 defined $max and $value > $max
2942 5 0 8 defined $min and defined $max
5 7 1 defined $min and defined $max and $value < $min || $value > $max
2947 5 4 0 defined $min and $value < $min
2952 5 4 0 defined $max and $value > $max
2964 8 6 1 defined $min and not &looks_like_number($min)
2965 8 6 0 defined $max and not &looks_like_number($max)
2996 1 2 7 defined $pattern and !ref($pattern) || ref $pattern eq 'Regexp'
3042 0 0 9 defined $k and $k ne ''

or 2 conditions

line l !l condition
1750 2 1 $uniq ||= {}
2418 2 2 $vr->{'raw'}{$param} || ''
2436 0 1 $rr->{'key'} ||= '_content_type'
2466 34 0 $msg ||= 'ERR_DEFAULT'
2505 11 0 $msg ||= 'ERR_DEFAULT'
2650 3 0 $self->{'ec'}{$key} || 0
2700 2 0 $self->{'wc'}{$key} || 0

or 3 conditions

line l !l&&r !l&&!r condition
1136 1 0 0 $doc_rule or @doc_lines
1214 318 4 2 $DIRECTIVE{$key} or $ERROR_MSG{$key}
1232 3 5 207 $key eq 'split' or $key eq 'list'
0 7 200 $key eq 'error' or $key eq 'errmsg'
1235 91 4 0 $CATEGORY{$type} eq 'param' or $type eq 'content_type'
1254 3 1 0 $CLEANER_DEF{$value} || $value
1366 24 4 100 $type eq 'optional' or $type eq 'mandatory'
1465 0 0 4 ref $typevalue or not $typevalue =~ /\w/
1478 3 6 1 $long ||= $MEDIA_TYPE{$short}
1527 167 5 66 defined $rr or @lines
1559 0 0 4 $last_pod or $this_pod
1637 0 0 0 $list_level > 0 or $item_body
1784 0 0 60 !ref($context) || &reftype($context) ne 'HASH'
1901 0 0 60 ref $ruleset_name or not $ruleset_name =~ /\w/
1956 105 0 4 exists $vr->{'ps'}{$key} or exists $vr->{'ig'}{$key}
2010 1 185 28 $rr->{'key'} || $param
2016 5 7 32 $rr->{'type'} eq 'together' or $rr->{'type'} eq 'at_most_one'
2184 0 7 0 $rr->{'ERR_INVALID'} || $rr->{'errmsg'} || $result->{'error'}
2192 0 16 0 $rr->{'ERR_INVALID'} || $rr->{'errmsg'} || $result->{'error'}
2301 0 0 0 $rr->{'key'} || $param
2378 3 1 0 $rr->{'constraint'} eq 'require_one' || $rr->{'constraint'} eq 'require_any'
0 2 0 $rr->{'constraint'} eq 'allow_one' || $rr->{'constraint'} eq 'require_one'
2419 0 4 0 $rr->{'key'} || $rr->{'param'}
2474 4 0 0 $rr->{$msg} || $vr->{'settings'}{$msg} || $ERROR_MSG{$msg} || $ERROR_MSG{'ERR_DEFAULT'}
2513 0 0 0 $rr->{$msg} || $vr->{'settings'}{$msg} || $ERROR_MSG{$msg} || $ERROR_MSG{'ERR_DEFAULT'}
2900 8 6 1 not defined $min or $min =~ /^[+-]?\d+$/
2901 9 5 0 not defined $max or $max =~ /^[+-]?\d+$/
2903 6 0 8 defined $min or defined $max
2942 3 1 4 $value < $min || $value > $max
2967 6 0 8 defined $min or defined $max
2996 4 4 1 !ref($pattern) || ref $pattern eq 'Regexp'