Branch Coverage

File:blib/lib/Params/Validate/Strict.pm
Coverage:86.2%

line%coveragebranch
1017100TFunless (defined $unknown_parameter_handler)
1018100TFif ($params->{'carp_on_warn'}) { }
1025100TFunless defined $schema
1029100TFif (ref $schema eq "ARRAY")
1034100TFif (ref $schema ne "HASH")
104250TFif ($schema->{'members'} and $schema->{'description'} || $schema->{'error_msg'})
1047100TFif (ref $schema eq "ARRAY")
1052100TFif (exists $params->{'args'} and not defined $args) { }
100TFelsif (ref $args ne 'HASH' and ref $args ne 'ARRAY') { }
1058100TFif (ref $args eq "HASH")
1061100TFunless (exists $schema->{$key})
1062100TFif ($unknown_parameter_handler eq 'die') { }
100TFelsif ($unknown_parameter_handler eq 'warn') { }
100TFelsif ($unknown_parameter_handler eq 'ignore') { }
1068100TFif ($logger)
1082100TFif (defined(my $rules = $schema->{$key})) { }
1083100TFif (ref $rules eq 'HASH') { }
1084100TFunless (defined $rules->{'position'})
108550TFif ($are_positional_args == 1)
1107100TFif ($are_positional_args == 1) { }
110850TFif (ref $args ne "ARRAY")
1116100TFunless (defined $rules)
1122100TFif (ref $rules eq "")
1130100TFif (ref $rules eq "HASH")
1131100TFif (exists $rules->{'description'})
1139100TFif ($is_stringref_type)
1140100TFif (ref $value ne "SCALAR")
1141100TFref $value ? :
1146100TFif ($rules->{'transform'} and defined $value)
1147100TFif (ref $rules->{'transform'} eq 'CODE') { }
1153100TFif (exists $rules->{'optional'}) { }
100TFelsif ($rules->{'nullable'}) { }
1154100TFif (ref $rules->{'optional'} eq 'CODE') { }
1158100TF$is_stringref_type ? :
1169100TFif (ref $rules eq 'HASH' and $is_optional) { }
100TFelsif (ref $args eq 'HASH' and not exists $args->{$key}) { }
1171100TFif ($are_positional_args == 1) { }
1173100TFunless (defined $$args[$rules->{'position'}])
1177100TFunless (exists $args->{$key})
1181100TFif ($look_for_default)
1182100TFif ($are_positional_args == 1)
1183100TFif (scalar @{$args;} < $rules->{'position'})
1189100TFif (exists $rules->{'default'})
1195100TFif ($rules->{'schema'}) { }
1197100TFunless scalar %{$value;}
1214100TFif (ref $rules eq "HASH" and ref $rules->{'type'} eq "ARRAY")
1217100TFunless (@type_list)
1225100TFif (ref $rules eq 'HASH') { }
100TFelsif (ref $rules eq 'ARRAY') { }
50TFelsif (ref $rules) { }
1226100TFif (defined(my $min = $rules->{'min'} // $rules->{'minimum'}) and defined(my $max = $rules->{'max'}))
1227100TFif ($min > $max)
1233100TFif ($rules->{'memberof'} or $rules->{'enum'} or $rules->{'values'})
1234100TFif (defined(my $min = $rules->{'min'} // $rules->{'minimum'}))
1237100TFif (defined(my $max = $rules->{'max'}))
1245100TFif (ref $rule_value eq "CODE" and $rule_name ne "validate" and $rule_name ne "callback" and $rule_name ne "validator" and $rule_name ne "transform" and $rule_name ne "optional")
125550TFif (&Scalar::Util::blessed($rule_value) and $rule_value->can("as_string"))
1259100TFif ($rule_name eq 'type') { }
100TFelsif ($rule_name eq 'min' or $rule_name eq 'minimum') { }
100TFelsif ($rule_name eq 'max') { }
100TFelsif ($rule_name eq 'matches' or $rule_name eq 'regex') { }
100TFelsif ($rule_name eq 'nomatch') { }
100TFelsif ($rule_name eq 'memberof' or $rule_name eq 'enum' or $rule_name eq 'values') { }
100TFelsif ($rule_name eq 'notmemberof') { }
100TFelsif ($rule_name eq 'isa') { }
100TFelsif ($rule_name eq 'can') { }
100TFelsif ($rule_name eq 'element_type') { }
100TFelsif ($rule_name eq 'optional') { }
100TFelsif ($rule_name eq 'nullable') { }
100TFelsif ($rule_name eq 'default') { }
100TFelsif ($rule_name eq 'error_msg') { }
100TFelsif ($rule_name eq 'transform') { }
100TFelsif ($rule_name eq 'case_sensitive') { }
100TFelsif ($rule_name eq 'description') { }
50TFelsif ($rule_name =~ /^_/) { }
100TFelsif ($rule_name eq 'semantic') { }
100TFelsif ($rule_name eq 'schema') { }
100TFelsif ($rule_name eq 'validate' or $rule_name eq 'validator') { }
100TFelsif ($rule_name eq 'callback') { }
100TFelsif ($rule_name eq 'position') { }
1262100TFif ($type eq 'string' or $type eq 'str') { }
100TFelsif ($type eq 'integer' or $type eq 'int') { }
100TFelsif ($type eq 'number' or $type eq 'float' or $type eq 'num' or $type eq 'double') { }
100TFelsif ($type eq 'arrayref') { }
100TFelsif ($type eq 'hashref') { }
100TFelsif ($type eq 'scalar') { }
100TFelsif ($type eq 'scalarref') { }
100TFelsif ($type eq 'stringref') { }
100TFelsif ($type eq 'boolean' or $type eq 'bool') { }
100TFelsif ($type eq 'coderef') { }
100TFelsif ($type eq 'object') { }
100TFelsif (my $custom_type = $custom_types->{$type}) { }
1263100TFif (ref $value)
12660TFunless (ref $value eq "" or defined $value and length $value)
1270100TFunless (defined $value)
1273100TFif (not &Scalar::Util::looks_like_number($value) or $value - $value != 0 or $value != int $value)
1274100TFif ($rules->{'error_msg'}) { }
1282100TFunless (defined $value)
1285100TFunless (&Scalar::Util::looks_like_number($value))
128650TFif ($rules->{'error_msg'}) { }
1295100TFunless (defined $value)
1298100TFif (ref $value ne "ARRAY")
129950TFif ($rules->{'error_msg'}) { }
1306100TFunless (defined $value)
1309100TFif (ref $value ne "HASH")
131050TFif ($rules->{'error_msg'}) { }
1317100TFunless (defined $value)
1320100TFif (ref $value)
1324100TFunless (defined $value)
1327100TFif (ref $value ne "SCALAR")
1328100TFref $value ? :
1332100TFunless (defined $value)
1337100TFif (ref $value)
1341100TFunless (defined $value)
1344100TFif (defined(my $b = $Readonly::Values::Boolean::booleans{$value})) { }
134750TFif ($rules->{'error_msg'}) { }
1354100TFunless (defined $value)
1357100TFif (ref $value ne "CODE")
135850TFif ($rules->{'error_msg'}) { }
1365100TFunless (defined $value)
1368100TFunless (&Scalar::Util::blessed($value))
136950TFif ($rules->{'error_msg'}) { }
1376100TFif ($custom_type->{'transform'})
1378100TFif (ref $custom_type->{'transform'} eq 'CODE') { }
139050TFunless (defined $rules->{'type'})
1394100TFif (exists $custom_types->{$type}{'min'} or exists $custom_types->{$type}{'minimum'})
1398100TFif ($type eq 'string' or $type eq 'str' or $type eq 'stringref') { }
100TFelsif ($type eq 'arrayref') { }
100TFelsif ($type eq 'hashref') { }
100TFelsif ($type eq 'integer' or $type eq 'number' or $type eq 'float') { }
1399100TFif ($rule_value < 0)
140050TFif ($rules->{'error_msg'}) { }
140650TFunless (defined $value)
140950TFif (defined(my $len = _number_of_characters($value))) { }
1410100TFif ($len < $rule_value)
141950TFunless (defined $value)
1422100TFif (ref $value ne "ARRAY")
142350TFif ($rules->{'error_msg'}) { }
1429100TFif (scalar @{$value;} < $rule_value)
143050TFif ($rules->{'error_msg'}) { }
143850TFunless (defined $value)
1441100TFif (scalar keys %{$value;} < $rule_value)
1442100TFif ($rules->{'error_msg'}) { }
145050TFunless (defined $value)
1453100TFif (&Scalar::Util::looks_like_number($value)) { }
1454100TFif ($value < $rule_value)
1455100TFif ($rules->{'error_msg'}) { }
100TFelsif ($type eq 'integer' and $value == 0) { }
50TFelsif ($type eq 'integer' and $value == 1) { }
146850TFif ($rules->{'error_msg'}) { }
147950TFunless (defined $rules->{'type'})
1483100TFif (exists $custom_types->{$type}{'max'})
1487100TFif ($type eq 'string' or $type eq 'str' or $type eq 'stringref') { }
100TFelsif ($type eq 'arrayref') { }
100TFelsif ($type eq 'hashref') { }
100TFelsif ($type eq 'integer' or $type eq 'number' or $type eq 'float') { }
148850TFunless (defined $value)
149150TFif (defined(my $len = _number_of_characters($value))) { }
1492100TFif ($len > $rule_value)
150150TFunless (defined $value)
150450TFif (ref $value ne "ARRAY")
15050TFif ($rules->{'error_msg'}) { }
1511100TFif (scalar @{$value;} > $rule_value)
151250TFif ($rules->{'error_msg'}) { }
152050TFunless (defined $value)
1523100TFif (scalar keys %{$value;} > $rule_value)
1524100TFif ($rules->{'error_msg'}) { }
153250TFunless (defined $value)
153550TFif (&Scalar::Util::looks_like_number($value)) { }
1536100TFif ($value > $rule_value)
153750TFif ($rules->{'error_msg'}) { }
50TFelsif ($type eq 'integer' and $value == 0) { }
50TFelsif ($type eq 'integer' and $value == -1) { }
15500TFif ($rules->{'error_msg'}) { }
1561100TFunless (defined $value)
1565100TFref $rule_value eq 'Regexp' ? :
1566100TFif ($rules->{'type'} eq 'arrayref' or $rules->{'type'} eq 'ArrayRef') { }
100TFelsif (not $value =~ /$re/) { }
1568100TFif (scalar @matches != scalar @{$value;})
156950TFif ($rules->{'error_msg'}) { }
1576100TFif ($rules->{'error_msg'}) { }
1584100TFif ($@)
1585100TFif ($rules->{'error_msg'}) { }
159350TFunless (defined $value)
1596100TFif ($rules->{'type'} eq 'arrayref' or $rules->{'type'} eq 'ArrayRef') { }
100TFelsif ($value =~ /$rule_value/) { }
1598100TFif (scalar @matches)
159950TFif ($rules->{'error_msg'}) { }
1606100TFif ($rules->{'error_msg'}) { }
161450TFunless (defined $value)
1617100TFif (ref $rule_value eq 'ARRAY') { }
1619100TFif ($rules->{'type'} eq 'integer' or $rules->{'type'} eq 'number' or $rules->{'type'} eq 'float') { }
1620100TFunless (&List::Util::any(sub {         $_ == $value; } , @{$rule_value;}))
1625100TF!defined($rules->{'case_sensitive'}) || $rules->{'case_sensitive'} == 1 ? :
100TFunless (&List::Util::any(sub {         !defined($rules->{'case_sensitive'}) || $rules->{'case_sensitive'} == 1 ? $_ eq $value : lc $_ eq $l; } , @{$rule_value;}))
1630100TFunless ($ok)
1631100TFif ($rules->{'error_msg'}) { }
163950TFif ($rules->{'error_msg'}) { }
164650TFunless (defined $value)
1649100TFif (ref $rule_value eq 'ARRAY') { }
1651100TFif ($rules->{'type'} eq 'integer' or $rules->{'type'} eq 'number' or $rules->{'type'} eq 'float') { }
1652100TFif (&List::Util::any(sub {         $_ == $value; } , @{$rule_value;}))
1657100TF!defined($rules->{'case_sensitive'}) || $rules->{'case_sensitive'} == 1 ? :
100TFif (&List::Util::any(sub {         !defined($rules->{'case_sensitive'}) || $rules->{'case_sensitive'} == 1 ? $_ eq $value : lc $_ eq $l; } , @{$rule_value;}))
1662100TFunless ($ok)
1663100TFif ($rules->{'error_msg'}) { }
167150TFif ($rules->{'error_msg'}) { }
167850TFunless (defined $value)
1681100TFif ($rules->{'type'} eq 'object') { }
1682100TFunless ($value->isa($rule_value))
168350TFref $value ? :
169050TFunless (defined $value)
1693100TFif ($rules->{'type'} eq 'object') { }
1694100TFif (ref $rule_value eq 'ARRAY') { }
100TFelsif (not ref $rule_value) { }
1697100TFunless ($value->can($method))
1703100TFunless ($value->can($rule_value))
1714100TFif ($rules->{'type'} eq 'arrayref' or $rules->{'type'} eq 'ArrayRef') { }
1717100TFif ($custom_type and $custom_type->{'type'})
1721100TFif ($custom_type and $custom_type->{'transform'})
1723100TFif (ref $custom_type->{'transform'} eq 'CODE') { }
1730100TFif ($type eq 'string' or $type eq 'Str') { }
100TFelsif ($type eq 'integer') { }
50TFelsif ($type eq 'number' or $rule_value eq 'float') { }
1731100TFif (ref $member)
173250TFif ($rules->{'error_msg'}) { }
1740100TFif (ref $member or $member =~ /\D/)
1741100TFif ($rules->{'error_msg'}) { }
1749100TFif (ref $member or not $member =~ /^[-+]?(\d*\.\d+|\d+\.?\d*)$/)
175050TFif ($rules->{'error_msg'}) { }
1781100TFif ($rule_value eq 'unix_timestamp') { }
178250TFif ($value < 0 or $value > 2147483647)
1790100TFif ($rules->{'type'} eq 'arrayref' or $rules->{'type'} eq 'ArrayRef') { }
100TFelsif ($rules->{'type'} eq 'hashref') { }
179150TFif (ref $value eq 'ARRAY') { }
0TFelsif (defined $value) { }
1801100TFif ($is_field_schema) { }
180850TFunless (validate_strict(\%inner))
181650TFif (ref $rule_value eq 'HASH') { }
1819100TFif (scalar keys %{$nested_with_defaults;})
182050TFif (my $new_args = validate_strict({'input', $nested_with_defaults, 'schema', $rule_value, 'custom_types', $custom_types})) { }
183350TFif (ref $rule_value eq 'CODE') { }
1834100TFif (my $error = &{$rule_value;}($args))
1844100TFunless (defined &$rule_value)
1848100TFunless ($res)
184950TFif ($rules->{'error_msg'}) { }
185750TFif ($rule_value =~ /\D/)
186050TFif ($rule_value < 0)
1868100TFif (scalar @{$rules;}) { }
1875100TFif (ref $rule ne "HASH")
187950TFunless (defined $rule->{'type'})
1888100TFunless ($@)
189150TFif defined $result
1896100TFunless ($rc)
1911100TFif (my $relationships = $params->{'relationships'})
1915100TFif (my $cross_validation = $params->{'cross_validation'})
1918100TFif (not ref $validator or ref $validator ne "CODE")
1922100TFif (my $error = &{$validator;}(\%validated_args, $validator))
1934100TFif ($are_positional_args == 1)
1940100TFif (exists $validated_args{$key})
1943100TFif (defined $rc[$position])
1970100TFunless ref $spec eq "HASH"
1973100TFunless exists $spec->{'name'}
1977100TFif exists $schema{$name}
1989100TFunless defined $value
1991100TFunless ($value =~ /[^[:ascii:]]/)
1995100TFunless utf8::is_utf8($value)
2011100TFif (ref $rules eq "HASH" and exists $rules->{'default'} and not exists $result{$key})
2016100TFif (ref $rules eq "HASH" and $rules->{'schema'} and ref $result{$key} eq "HASH")
202750TFunless ref $relationships eq "ARRAY"
203050TFunless my $type = $rel->{'type'}
2032100TFif ($type eq 'mutually_exclusive') { }
100TFelsif ($type eq 'required_group') { }
100TFelsif ($type eq 'conditional_requirement') { }
100TFelsif ($type eq 'dependency') { }
100TFelsif ($type eq 'value_constraint') { }
50TFelsif ($type eq 'value_conditional') { }
205350TFunless $rel->{'params'}
205450TFunless @params >= 2
2056100TFif exists $args->{$_}
2058100TFif (@present > 1)
206750TFunless $rel->{'params'}
206850TFunless @params >= 2
2070100TFif exists $args->{$_}
2072100TFif (@present == 0)
208250TFunless my $if_param = $rel->{'if'}
208350TFunless my $then_param = $rel->{'then_required'}
2086100TFif (exists $args->{$if_param} and defined $args->{$if_param})
2088100TFif ($args->{$if_param})
2090100TFunless (exists $args->{$then_param} and defined $args->{$then_param})
210150TFunless my $param = $rel->{'param'}
210250TFunless my $requires = $rel->{'requires'}
2105100TFif (exists $args->{$param} and defined $args->{$param})
2106100TFunless (exists $args->{$requires} and defined $args->{$requires})
211650TFunless my $if_param = $rel->{'if'}
211750TFunless my $then_param = $rel->{'then'}
211850TFunless my $operator = $rel->{'operator'}
212050TFunless defined $value
2123100TFif (exists $args->{$if_param} and defined $args->{$if_param} and $args->{$if_param})
212550TFif (exists $args->{$then_param} and defined $args->{$then_param})
2129100TFif ($operator eq '==') { }
100TFelsif ($operator eq '!=') { }
100TFelsif ($operator eq '<') { }
100TFelsif ($operator eq '<=') { }
100TFelsif ($operator eq '>') { }
50TFelsif ($operator eq '>=') { }
2143100TFunless ($valid)
215450TFunless my $if_param = $rel->{'if'}
215650TFunless my $then_param = $rel->{'then_required'}
215750TFunless defined $equals
2160100TFif (exists $args->{$if_param} and defined $args->{$if_param})
2161100TFif ($args->{$if_param} eq $equals)
2163100TFunless (exists $args->{$then_param} and defined $args->{$then_param})
2179100TFif ($logger)
2193100TFif ($logger) { }