| line | % | coverage | branch |
| 764 | 100 | T | F | if (ref $schema ne "HASH") |
| 772 | 50 | T | F | if ($schema->{'members'} and $schema->{'description'} || $schema->{'error_msg'}) |
| 778 | 100 | T | F | if (exists $params->{'args'} and not defined $args) { } |
| 100 | T | F | elsif (ref $args ne 'HASH' and ref $args ne 'ARRAY') { } |
| 784 | 100 | T | F | if (ref $args eq "HASH") |
| 787 | 100 | T | F | unless (exists $schema->{$key}) |
| 788 | 100 | T | F | if ($unknown_parameter_handler eq 'die') { } |
| 100 | T | F | elsif ($unknown_parameter_handler eq 'warn') { } |
| 100 | T | F | elsif ($unknown_parameter_handler eq 'ignore') { } |
| 794 | 100 | T | F | if ($logger) |
| 808 | 100 | T | F | if (defined(my $rules = $schema->{$key})) { } |
| 809 | 100 | T | F | if (ref $rules eq 'HASH') { } |
| 810 | 100 | T | F | unless (defined $rules->{'position'}) |
| 811 | 50 | T | F | if ($are_positional_args == 1) |
| 832 | 100 | T | F | $are_positional_args == 1 ? : |
| 834 | 100 | T | F | unless (defined $rules) |
| 840 | 100 | T | F | if (ref $rules eq "") |
| 848 | 100 | T | F | if (ref $rules eq "HASH") |
| 849 | 50 | T | F | if (exists $rules->{'description'}) |
| 852 | 100 | T | F | if ($rules->{'transform'} and defined $value) |
| 853 | 100 | T | F | if (ref $rules->{'transform'} eq 'CODE') { } |
| 859 | 100 | T | F | if (exists $rules->{'optional'}) |
| 860 | 100 | T | F | if (ref $rules->{'optional'} eq 'CODE') { } |
| 869 | 100 | T | F | if (ref $rules eq 'HASH' and $is_optional) { } |
| 100 | T | F | elsif (ref $args eq 'HASH' and not exists $args->{$key}) { } |
| 871 | 100 | T | F | if ($are_positional_args == 1) { } |
| 872 | 100 | T | F | unless (defined @{$args;}[$rules->{'position'}]) |
| 876 | 100 | T | F | unless (exists $args->{$key}) |
| 880 | 100 | T | F | if ($look_for_default) |
| 881 | 100 | T | F | if ($are_positional_args == 1) |
| 882 | 50 | T | F | if (scalar @{$args;} < $rules->{'position'}) |
| 888 | 100 | T | F | if (exists $rules->{'default'}) |
| 893 | 100 | T | F | if ($rules->{'schema'}) { } |
| 895 | 100 | T | F | unless scalar %{$value;} |
| 907 | 100 | T | F | if (ref $rules eq 'HASH') { } |
| 100 | T | F | elsif (ref $rules eq 'ARRAY') { } |
| 50 | T | F | elsif (ref $rules) { } |
| 908 | 100 | T | F | if (my $min = $rules->{'min'} and my $max = $rules->{'max'}) |
| 909 | 100 | T | F | if ($min > $max) |
| 914 | 100 | T | F | if ($rules->{'memberof'}) |
| 915 | 100 | T | F | if (my $min = $rules->{'min'}) |
| 918 | 100 | T | F | if (my $max = $rules->{'max'}) |
| 926 | 100 | T | F | if (ref $rule_value eq "CODE" and $rule_name ne "validate" and $rule_name ne "callback" and $rule_name ne "validator") |
| 930 | 100 | T | F | if ($rule_name eq 'type') { } |
| 100 | T | F | elsif ($rule_name eq 'min') { } |
| 100 | T | F | elsif ($rule_name eq 'max') { } |
| 100 | T | F | elsif ($rule_name eq 'matches') { } |
| 100 | T | F | elsif ($rule_name eq 'nomatch') { } |
| 100 | T | F | elsif ($rule_name eq 'memberof') { } |
| 100 | T | F | elsif ($rule_name eq 'notmemberof') { } |
| 100 | T | F | elsif ($rule_name eq 'isa') { } |
| 100 | T | F | elsif ($rule_name eq 'can') { } |
| 100 | T | F | elsif ($rule_name eq 'element_type') { } |
| 100 | T | F | elsif ($rule_name eq 'optional') { } |
| 100 | T | F | elsif ($rule_name eq 'default') { } |
| 100 | T | F | elsif ($rule_name eq 'error_msg') { } |
| 100 | T | F | elsif ($rule_name eq 'transform') { } |
| 100 | T | F | elsif ($rule_name eq 'case_sensitive') { } |
| 50 | T | F | elsif ($rule_name eq 'description') { } |
| 100 | T | F | elsif ($rule_name eq 'schema') { } |
| 100 | T | F | elsif ($rule_name eq 'validate' or $rule_name eq 'validator') { } |
| 100 | T | F | elsif ($rule_name eq 'callback') { } |
| 50 | T | F | elsif ($rule_name eq 'position') { } |
| 933 | 100 | T | F | if ($type eq 'string') { } |
| 100 | T | F | elsif ($type eq 'integer') { } |
| 100 | T | F | elsif ($type eq 'number' or $type eq 'float') { } |
| 100 | T | F | elsif ($type eq 'arrayref') { } |
| 100 | T | F | elsif ($type eq 'hashref') { } |
| 100 | T | F | elsif ($type eq 'boolean') { } |
| 100 | T | F | elsif ($type eq 'coderef') { } |
| 100 | T | F | elsif ($type eq 'object') { } |
| 100 | T | F | elsif (my $custom_type = $custom_types->{$type}) { } |
| 934 | 100 | T | F | if (ref $value) |
| 937 | 0 | T | F | unless (ref $value eq "" or defined $value and length $value) |
| 941 | 100 | T | F | unless (defined $value) |
| 944 | 100 | T | F | unless ($value =~ /^\s*[+\-]?\d+\s*$/) |
| 945 | 100 | T | F | if ($rules->{'error_msg'}) { } |
| 953 | 100 | T | F | unless (defined $value) |
| 956 | 100 | T | F | unless (&Scalar::Util::looks_like_number($value)) |
| 957 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 966 | 100 | T | F | unless (defined $value) |
| 969 | 50 | T | F | if (ref $value ne "ARRAY") |
| 970 | 0 | T | F | if ($rules->{'error_msg'}) { } |
| 977 | 100 | T | F | unless (defined $value) |
| 980 | 50 | T | F | if (ref $value ne "HASH") |
| 981 | 0 | T | F | if ($rules->{'error_msg'}) { } |
| 988 | 100 | T | F | unless (defined $value) |
| 991 | 100 | T | F | if ($value eq 'true' or $value eq 'on' or $value eq 'yes') { } |
| 100 | T | F | elsif ($value eq 'false' or $value eq 'off' or $value eq 'no') { } |
| 996 | 100 | T | F | if ($value ne 1 and $value ne 0) |
| 997 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1005 | 100 | T | F | unless (defined $value) |
| 1008 | 50 | T | F | if (ref $value ne "CODE") |
| 1009 | 0 | T | F | if ($rules->{'error_msg'}) { } |
| 1016 | 100 | T | F | unless (defined $value) |
| 1019 | 100 | T | F | unless (&Scalar::Util::blessed($value)) |
| 1020 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1027 | 100 | T | F | if ($custom_type->{'transform'}) |
| 1029 | 50 | T | F | if (ref $custom_type->{'transform'} eq 'CODE') { } |
| 1041 | 50 | T | F | unless (defined $rules->{'type'}) |
| 1045 | 100 | T | F | if (exists $custom_types->{$type}{'min'}) |
| 1049 | 100 | T | F | if ($type eq 'string') { } |
| 100 | T | F | elsif ($rules->{'type'} eq 'arrayref') { } |
| 100 | T | F | elsif ($rules->{'type'} eq 'hashref') { } |
| 100 | T | F | elsif ($type eq 'integer' or $type eq 'number' or $type eq 'float') { } |
| 1050 | 100 | T | F | if ($rule_value < 0) |
| 1051 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1057 | 50 | T | F | unless (defined $value) |
| 1061 | 50 | T | F | unless utf8::is_utf8($value) |
| 1063 | 50 | T | F | unless (defined $len) |
| 1068 | 100 | T | F | if ($len < $rule_value) |
| 1073 | 50 | T | F | unless (defined $value) |
| 1076 | 100 | T | F | if (ref $value ne "ARRAY") |
| 1077 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1083 | 100 | T | F | if (scalar @{$value;} < $rule_value) |
| 1084 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1092 | 50 | T | F | unless (defined $value) |
| 1095 | 100 | T | F | if (scalar keys %{$value;} < $rule_value) |
| 1096 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1104 | 50 | T | F | unless (defined $value) |
| 1107 | 100 | T | F | if (&Scalar::Util::looks_like_number($value)) { } |
| 1108 | 100 | T | F | if ($value < $rule_value) |
| 1109 | 100 | T | F | if ($rules->{'error_msg'}) { } |
| 1118 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1129 | 50 | T | F | unless (defined $rules->{'type'}) |
| 1133 | 100 | T | F | if (exists $custom_types->{$type}{'max'}) |
| 1137 | 100 | T | F | if ($type eq 'string') { } |
| 100 | T | F | elsif ($rules->{'type'} eq 'arrayref') { } |
| 100 | T | F | elsif ($rules->{'type'} eq 'hashref') { } |
| 100 | T | F | elsif ($type eq 'integer' or $type eq 'number' or $type eq 'float') { } |
| 1138 | 50 | T | F | unless (defined $value) |
| 1142 | 50 | T | F | unless utf8::is_utf8($value) |
| 1144 | 50 | T | F | unless (defined $len) |
| 1149 | 100 | T | F | if ($len > $rule_value) |
| 1154 | 50 | T | F | unless (defined $value) |
| 1157 | 50 | T | F | if (ref $value ne "ARRAY") |
| 1158 | 0 | T | F | if ($rules->{'error_msg'}) { } |
| 1164 | 100 | T | F | if (scalar @{$value;} > $rule_value) |
| 1165 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1173 | 50 | T | F | unless (defined $value) |
| 1176 | 100 | T | F | if (scalar keys %{$value;} > $rule_value) |
| 1177 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1185 | 50 | T | F | unless (defined $value) |
| 1188 | 50 | T | F | if (&Scalar::Util::looks_like_number($value)) { } |
| 1189 | 100 | T | F | if ($value > $rule_value) |
| 1190 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1199 | 0 | T | F | if ($rules->{'error_msg'}) { } |
| 1210 | 100 | T | F | unless (defined $value) |
| 1214 | 100 | T | F | ref $rule_value eq 'Regexp' ? : |
| 1215 | 100 | T | F | if ($rules->{'type'} eq 'arrayref') { } |
| 100 | T | F | elsif (not $value =~ /$re/) { } |
| 1217 | 50 | T | F | if (scalar @matches != scalar @{$value;}) |
| 1218 | 0 | T | F | if ($rules->{'error_msg'}) { } |
| 1225 | 100 | T | F | if ($rules->{'error_msg'}) { } |
| 1233 | 100 | T | F | if ($@) |
| 1234 | 100 | T | F | if ($rules->{'error_msg'}) { } |
| 1242 | 50 | T | F | unless (defined $value) |
| 1245 | 100 | T | F | if ($rules->{'type'} eq 'arrayref') { } |
| 100 | T | F | elsif ($value =~ /$rule_value/) { } |
| 1247 | 100 | T | F | if (scalar @matches) |
| 1248 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1255 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1263 | 50 | T | F | unless (defined $value) |
| 1266 | 100 | T | F | if (ref $rule_value eq 'ARRAY') { } |
| 1268 | 100 | T | F | if ($rules->{'type'} eq 'integer' or $rules->{'type'} eq 'number' or $rules->{'type'} eq 'float') { } |
| 1269 | 100 | T | F | unless (&List::Util::any(sub {
$_ == $value;
}
, @{$rule_value;})) |
| 1274 | 100 | T | F | !defined($rules->{'case_sensitive'}) || $rules->{'case_sensitive'} == 1 ? : |
| 100 | T | F | unless (&List::Util::any(sub {
!defined($rules->{'case_sensitive'}) || $rules->{'case_sensitive'} == 1 ? $_ eq $value : lc $_ eq $l;
}
, @{$rule_value;})) |
| 1279 | 100 | T | F | unless ($ok) |
| 1280 | 100 | T | F | if ($rules->{'error_msg'}) { } |
| 1288 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1295 | 50 | T | F | unless (defined $value) |
| 1298 | 100 | T | F | if (ref $rule_value eq 'ARRAY') { } |
| 1300 | 100 | T | F | if ($rules->{'type'} eq 'integer' or $rules->{'type'} eq 'number' or $rules->{'type'} eq 'float') { } |
| 1301 | 100 | T | F | if (&List::Util::any(sub {
$_ == $value;
}
, @{$rule_value;})) |
| 1306 | 50 | T | F | !defined($rules->{'case_sensitive'}) || $rules->{'case_sensitive'} == 1 ? : |
| 100 | T | F | if (&List::Util::any(sub {
!defined($rules->{'case_sensitive'}) || $rules->{'case_sensitive'} == 1 ? $_ eq $value : lc $_ eq $l;
}
, @{$rule_value;})) |
| 1311 | 100 | T | F | unless ($ok) |
| 1312 | 100 | T | F | if ($rules->{'error_msg'}) { } |
| 1320 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1327 | 100 | T | F | if ($rules->{'type'} eq 'object') { } |
| 1328 | 100 | T | F | unless ($value->isa($rule_value)) |
| 1336 | 50 | T | F | unless (defined $value) |
| 1339 | 100 | T | F | if ($rules->{'type'} eq 'object') { } |
| 1340 | 100 | T | F | if (ref $rule_value eq 'ARRAY') { } |
| 100 | T | F | elsif (not ref $rule_value) { } |
| 1343 | 100 | T | F | unless ($value->can($method)) |
| 1349 | 100 | T | F | unless ($value->can($rule_value)) |
| 1360 | 50 | T | F | if ($rules->{'type'} eq 'arrayref') { } |
| 1363 | 100 | T | F | if ($custom_type and $custom_type->{'type'}) |
| 1367 | 100 | T | F | if ($custom_type and $custom_type->{'transform'}) |
| 1369 | 50 | T | F | if (ref $custom_type->{'transform'} eq 'CODE') { } |
| 1376 | 100 | T | F | if ($type eq 'string') { } |
| 100 | T | F | elsif ($type eq 'integer') { } |
| 50 | T | F | elsif ($type eq 'number' or $rule_value eq 'float') { } |
| 1377 | 50 | T | F | if (ref $member) |
| 1378 | 0 | T | F | if ($rules->{'error_msg'}) { } |
| 1386 | 100 | T | F | if (ref $member or $member =~ /\D/) |
| 1387 | 100 | T | F | if ($rules->{'error_msg'}) { } |
| 1395 | 100 | T | F | if (ref $member or not $member =~ /^[-+]?(\d*\.\d+|\d+\.?\d*)$/) |
| 1396 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1424 | 100 | T | F | if ($rules->{'type'} eq 'arrayref') { } |
| 50 | T | F | elsif ($rules->{'type'} eq 'hashref') { } |
| 1425 | 50 | T | F | if (ref $value eq 'ARRAY') { } |
| 0 | T | F | elsif (defined $value) { } |
| 1427 | 50 | T | F | unless (validate_strict({"input", {$key, $member}, "schema", {$key, $rule_value}, "custom_types", $custom_types})) |
| 1435 | 50 | T | F | if (ref $value eq 'HASH') { } |
| 1438 | 100 | T | F | if (scalar keys %{$value;}) |
| 1439 | 50 | T | F | if (my $new_args = validate_strict({'input', $nested_with_defaults, 'schema', $rule_value, 'custom_types', $custom_types})) { } |
| 1452 | 50 | T | F | if (ref $rule_value eq 'CODE') { } |
| 1453 | 100 | T | F | if (my $error = &{$rule_value;}($args)) |
| 1462 | 100 | T | F | unless (defined &$rule_value) |
| 1466 | 100 | T | F | unless ($res) |
| 1467 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1475 | 50 | T | F | if ($rule_value =~ /\D/) |
| 1478 | 50 | T | F | if ($rule_value < 0) |
| 1486 | 100 | T | F | if (scalar @{$rules;}) { } |
| 1491 | 100 | T | F | if (ref $rule ne "HASH") |
| 1495 | 50 | T | F | unless (defined $rule->{'type'}) |
| 1503 | 100 | T | F | unless ($@) |
| 1508 | 100 | T | F | unless ($rc) |
| 1522 | 100 | T | F | if (my $cross_validation = $params->{'cross_validation'}) |
| 1525 | 100 | T | F | if (not ref $validator or ref $validator ne "CODE") |
| 1529 | 100 | T | F | if (my $error = &{$validator;}(\%validated_args, $validator)) |
| 1541 | 100 | T | F | if ($are_positional_args == 1) |
| 1544 | 50 | T | F | if (my $value = delete $validated_args{$key}) |
| 1546 | 50 | T | F | if (defined $rc[$position]) |
| 1564 | 100 | T | F | if ($logger) { } |
| 1579 | 100 | T | F | if ($logger) { } |
| 1593 | 100 | T | F | if (ref $rules eq "HASH" and exists $rules->{'default'} and not exists $result{$key}) |
| 1598 | 100 | T | F | if (ref $rules eq "HASH" and $rules->{'schema'} and ref $result{$key} eq "HASH") |