| line | % | coverage | branch |
| 938 | 100 | T | F | if (ref $schema ne "HASH") |
| 946 | 50 | T | F | if ($schema->{'members'} and $schema->{'description'} || $schema->{'error_msg'}) |
| 952 | 100 | T | F | if (exists $params->{'args'} and not defined $args) { } |
| 100 | T | F | elsif (ref $args ne 'HASH' and ref $args ne 'ARRAY') { } |
| 958 | 100 | T | F | if (ref $args eq "HASH") |
| 961 | 100 | T | F | unless (exists $schema->{$key}) |
| 962 | 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') { } |
| 968 | 100 | T | F | if ($logger) |
| 982 | 100 | T | F | if (defined(my $rules = $schema->{$key})) { } |
| 983 | 100 | T | F | if (ref $rules eq 'HASH') { } |
| 984 | 100 | T | F | unless (defined $rules->{'position'}) |
| 985 | 50 | T | F | if ($are_positional_args == 1) |
| 1006 | 100 | T | F | $are_positional_args == 1 ? : |
| 1008 | 100 | T | F | unless (defined $rules) |
| 1014 | 100 | T | F | if (ref $rules eq "") |
| 1022 | 100 | T | F | if (ref $rules eq "HASH") |
| 1023 | 50 | T | F | if (exists $rules->{'description'}) |
| 1026 | 100 | T | F | if ($rules->{'transform'} and defined $value) |
| 1027 | 100 | T | F | if (ref $rules->{'transform'} eq 'CODE') { } |
| 1033 | 100 | T | F | if (exists $rules->{'optional'}) { } |
| 50 | T | F | elsif ($rules->{'nullable'}) { } |
| 1034 | 100 | T | F | if (ref $rules->{'optional'} eq 'CODE') { } |
| 1045 | 100 | T | F | if (ref $rules eq 'HASH' and $is_optional) { } |
| 100 | T | F | elsif (ref $args eq 'HASH' and not exists $args->{$key}) { } |
| 1047 | 100 | T | F | if ($are_positional_args == 1) { } |
| 1049 | 100 | T | F | unless (defined $$args[$rules->{'position'}]) |
| 1053 | 100 | T | F | unless (exists $args->{$key}) |
| 1057 | 100 | T | F | if ($look_for_default) |
| 1058 | 100 | T | F | if ($are_positional_args == 1) |
| 1059 | 50 | T | F | if (scalar @{$args;} < $rules->{'position'}) |
| 1065 | 100 | T | F | if (exists $rules->{'default'}) |
| 1070 | 100 | T | F | if ($rules->{'schema'}) { } |
| 1072 | 100 | T | F | unless scalar %{$value;} |
| 1084 | 100 | T | F | if (ref $rules eq 'HASH') { } |
| 100 | T | F | elsif (ref $rules eq 'ARRAY') { } |
| 50 | T | F | elsif (ref $rules) { } |
| 1085 | 100 | T | F | if (defined(my $min = $rules->{'min'}) and defined(my $max = $rules->{'max'})) |
| 1086 | 100 | T | F | if ($min > $max) |
| 1091 | 100 | T | F | if ($rules->{'memberof'}) |
| 1092 | 100 | T | F | if (defined(my $min = $rules->{'min'})) |
| 1095 | 100 | T | F | if (defined(my $max = $rules->{'max'})) |
| 1103 | 100 | T | F | if (ref $rule_value eq "CODE" and $rule_name ne "validate" and $rule_name ne "callback" and $rule_name ne "validator") |
| 1107 | 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' or $rule_name eq 'enum') { } |
| 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') { } |
| 50 | T | F | elsif ($rule_name =~ /^_/) { } |
| 100 | T | F | elsif ($rule_name eq 'semantic') { } |
| 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') { } |
| 1110 | 100 | T | F | if ($type eq 'string' or $type eq 'str') { } |
| 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' or $type eq 'bool') { } |
| 100 | T | F | elsif ($type eq 'coderef') { } |
| 100 | T | F | elsif ($type eq 'object') { } |
| 100 | T | F | elsif (my $custom_type = $custom_types->{$type}) { } |
| 1111 | 100 | T | F | if (ref $value) |
| 1114 | 0 | T | F | unless (ref $value eq "" or defined $value and length $value) |
| 1118 | 100 | T | F | unless (defined $value) |
| 1121 | 100 | T | F | unless ($value =~ /^\s*[+\-]?\d+\s*$/) |
| 1122 | 100 | T | F | if ($rules->{'error_msg'}) { } |
| 1130 | 100 | T | F | unless (defined $value) |
| 1133 | 100 | T | F | unless (&Scalar::Util::looks_like_number($value)) |
| 1134 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1143 | 100 | T | F | unless (defined $value) |
| 1146 | 50 | T | F | if (ref $value ne "ARRAY") |
| 1147 | 0 | T | F | if ($rules->{'error_msg'}) { } |
| 1154 | 100 | T | F | unless (defined $value) |
| 1157 | 50 | T | F | if (ref $value ne "HASH") |
| 1158 | 0 | T | F | if ($rules->{'error_msg'}) { } |
| 1165 | 100 | T | F | unless (defined $value) |
| 1168 | 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') { } |
| 1173 | 100 | T | F | if ($value ne 1 and $value ne 0) |
| 1174 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1182 | 100 | T | F | unless (defined $value) |
| 1185 | 50 | T | F | if (ref $value ne "CODE") |
| 1186 | 0 | T | F | if ($rules->{'error_msg'}) { } |
| 1193 | 100 | T | F | unless (defined $value) |
| 1196 | 100 | T | F | unless (&Scalar::Util::blessed($value)) |
| 1197 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1204 | 100 | T | F | if ($custom_type->{'transform'}) |
| 1206 | 50 | T | F | if (ref $custom_type->{'transform'} eq 'CODE') { } |
| 1218 | 50 | T | F | unless (defined $rules->{'type'}) |
| 1222 | 100 | T | F | if (exists $custom_types->{$type}{'min'}) |
| 1226 | 100 | T | F | if ($type eq 'string' or $type eq 'str') { } |
| 100 | T | F | elsif ($type eq 'arrayref') { } |
| 100 | T | F | elsif ($type eq 'hashref') { } |
| 100 | T | F | elsif ($type eq 'integer' or $type eq 'number' or $type eq 'float') { } |
| 1227 | 100 | T | F | if ($rule_value < 0) |
| 1228 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1234 | 50 | T | F | unless (defined $value) |
| 1237 | 50 | T | F | if (defined(my $len = _number_of_characters($value))) { } |
| 1238 | 100 | T | F | if ($len < $rule_value) |
| 1247 | 50 | T | F | unless (defined $value) |
| 1250 | 100 | T | F | if (ref $value ne "ARRAY") |
| 1251 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1257 | 100 | T | F | if (scalar @{$value;} < $rule_value) |
| 1258 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1266 | 50 | T | F | unless (defined $value) |
| 1269 | 100 | T | F | if (scalar keys %{$value;} < $rule_value) |
| 1270 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1278 | 50 | T | F | unless (defined $value) |
| 1281 | 100 | T | F | if (&Scalar::Util::looks_like_number($value)) { } |
| 1282 | 100 | T | F | if ($value < $rule_value) |
| 1283 | 100 | T | F | if ($rules->{'error_msg'}) { } |
| 1292 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1303 | 50 | T | F | unless (defined $rules->{'type'}) |
| 1307 | 100 | T | F | if (exists $custom_types->{$type}{'max'}) |
| 1311 | 100 | T | F | if ($type eq 'string' or $type eq 'str') { } |
| 100 | T | F | elsif ($type eq 'arrayref') { } |
| 100 | T | F | elsif ($type eq 'hashref') { } |
| 100 | T | F | elsif ($type eq 'integer' or $type eq 'number' or $type eq 'float') { } |
| 1312 | 50 | T | F | unless (defined $value) |
| 1315 | 50 | T | F | if (defined(my $len = _number_of_characters($value))) { } |
| 1316 | 100 | T | F | if ($len > $rule_value) |
| 1325 | 50 | T | F | unless (defined $value) |
| 1328 | 50 | T | F | if (ref $value ne "ARRAY") |
| 1329 | 0 | T | F | if ($rules->{'error_msg'}) { } |
| 1335 | 100 | T | F | if (scalar @{$value;} > $rule_value) |
| 1336 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1344 | 50 | T | F | unless (defined $value) |
| 1347 | 100 | T | F | if (scalar keys %{$value;} > $rule_value) |
| 1348 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1356 | 50 | T | F | unless (defined $value) |
| 1359 | 50 | T | F | if (&Scalar::Util::looks_like_number($value)) { } |
| 1360 | 100 | T | F | if ($value > $rule_value) |
| 1361 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1370 | 0 | T | F | if ($rules->{'error_msg'}) { } |
| 1381 | 100 | T | F | unless (defined $value) |
| 1385 | 100 | T | F | ref $rule_value eq 'Regexp' ? : |
| 1386 | 100 | T | F | if ($rules->{'type'} eq 'arrayref' or $rules->{'type'} eq 'ArrayRef') { } |
| 100 | T | F | elsif (not $value =~ /$re/) { } |
| 1388 | 50 | T | F | if (scalar @matches != scalar @{$value;}) |
| 1389 | 0 | T | F | if ($rules->{'error_msg'}) { } |
| 1396 | 100 | T | F | if ($rules->{'error_msg'}) { } |
| 1404 | 100 | T | F | if ($@) |
| 1405 | 100 | T | F | if ($rules->{'error_msg'}) { } |
| 1413 | 50 | T | F | unless (defined $value) |
| 1416 | 100 | T | F | if ($rules->{'type'} eq 'arrayref' or $rules->{'type'} eq 'ArrayRef') { } |
| 100 | T | F | elsif ($value =~ /$rule_value/) { } |
| 1418 | 100 | T | F | if (scalar @matches) |
| 1419 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1426 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1434 | 50 | T | F | unless (defined $value) |
| 1437 | 100 | T | F | if (ref $rule_value eq 'ARRAY') { } |
| 1439 | 100 | T | F | if ($rules->{'type'} eq 'integer' or $rules->{'type'} eq 'number' or $rules->{'type'} eq 'float') { } |
| 1440 | 100 | T | F | unless (&List::Util::any(sub {
$_ == $value;
}
, @{$rule_value;})) |
| 1445 | 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;})) |
| 1450 | 100 | T | F | unless ($ok) |
| 1451 | 100 | T | F | if ($rules->{'error_msg'}) { } |
| 1459 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1466 | 50 | T | F | unless (defined $value) |
| 1469 | 100 | T | F | if (ref $rule_value eq 'ARRAY') { } |
| 1471 | 100 | T | F | if ($rules->{'type'} eq 'integer' or $rules->{'type'} eq 'number' or $rules->{'type'} eq 'float') { } |
| 1472 | 100 | T | F | if (&List::Util::any(sub {
$_ == $value;
}
, @{$rule_value;})) |
| 1477 | 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;})) |
| 1482 | 100 | T | F | unless ($ok) |
| 1483 | 100 | T | F | if ($rules->{'error_msg'}) { } |
| 1491 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1498 | 50 | T | F | unless (defined $value) |
| 1501 | 100 | T | F | if ($rules->{'type'} eq 'object') { } |
| 1502 | 100 | T | F | unless ($value->isa($rule_value)) |
| 1510 | 50 | T | F | unless (defined $value) |
| 1513 | 100 | T | F | if ($rules->{'type'} eq 'object') { } |
| 1514 | 100 | T | F | if (ref $rule_value eq 'ARRAY') { } |
| 100 | T | F | elsif (not ref $rule_value) { } |
| 1517 | 100 | T | F | unless ($value->can($method)) |
| 1523 | 100 | T | F | unless ($value->can($rule_value)) |
| 1534 | 50 | T | F | if ($rules->{'type'} eq 'arrayref' or $rules->{'type'} eq 'ArrayRef') { } |
| 1537 | 50 | T | F | if ($custom_type and $custom_type->{'type'}) |
| 1541 | 50 | T | F | if ($custom_type and $custom_type->{'transform'}) |
| 1543 | 50 | T | F | if (ref $custom_type->{'transform'} eq 'CODE') { } |
| 1550 | 100 | T | F | if ($type eq 'string' or $type eq 'Str') { } |
| 100 | T | F | elsif ($type eq 'integer') { } |
| 50 | T | F | elsif ($type eq 'number' or $rule_value eq 'float') { } |
| 1551 | 50 | T | F | if (ref $member) |
| 1552 | 0 | T | F | if ($rules->{'error_msg'}) { } |
| 1560 | 100 | T | F | if (ref $member or $member =~ /\D/) |
| 1561 | 100 | T | F | if ($rules->{'error_msg'}) { } |
| 1569 | 100 | T | F | if (ref $member or not $member =~ /^[-+]?(\d*\.\d+|\d+\.?\d*)$/) |
| 1570 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1599 | 50 | T | F | if ($rule_value eq 'unix_timestamp') { } |
| 1600 | 50 | T | F | if ($value < 0 or $value > 2147483647) |
| 1608 | 100 | T | F | if ($rules->{'type'} eq 'arrayref' or $rules->{'type'} eq 'ArrayRef') { } |
| 50 | T | F | elsif ($rules->{'type'} eq 'hashref') { } |
| 1609 | 50 | T | F | if (ref $value eq 'ARRAY') { } |
| 0 | T | F | elsif (defined $value) { } |
| 1611 | 50 | T | F | unless (validate_strict({"input", {$key, $member}, "schema", {$key, $rule_value}, "custom_types", $custom_types})) |
| 1619 | 50 | T | F | if (ref $value eq 'HASH') { } |
| 1622 | 100 | T | F | if (scalar keys %{$value;}) |
| 1623 | 50 | T | F | if (my $new_args = validate_strict({'input', $nested_with_defaults, 'schema', $rule_value, 'custom_types', $custom_types})) { } |
| 1636 | 50 | T | F | if (ref $rule_value eq 'CODE') { } |
| 1637 | 100 | T | F | if (my $error = &{$rule_value;}($args)) |
| 1646 | 100 | T | F | unless (defined &$rule_value) |
| 1650 | 100 | T | F | unless ($res) |
| 1651 | 50 | T | F | if ($rules->{'error_msg'}) { } |
| 1659 | 50 | T | F | if ($rule_value =~ /\D/) |
| 1662 | 50 | T | F | if ($rule_value < 0) |
| 1670 | 100 | T | F | if (scalar @{$rules;}) { } |
| 1675 | 100 | T | F | if (ref $rule ne "HASH") |
| 1679 | 50 | T | F | unless (defined $rule->{'type'}) |
| 1687 | 100 | T | F | unless ($@) |
| 1692 | 100 | T | F | unless ($rc) |
| 1707 | 100 | T | F | if (my $relationships = $params->{'relationships'}) |
| 1711 | 100 | T | F | if (my $cross_validation = $params->{'cross_validation'}) |
| 1714 | 100 | T | F | if (not ref $validator or ref $validator ne "CODE") |
| 1718 | 100 | T | F | if (my $error = &{$validator;}(\%validated_args, $validator)) |
| 1730 | 100 | T | F | if ($are_positional_args == 1) |
| 1733 | 50 | T | F | if (my $value = delete $validated_args{$key}) |
| 1735 | 100 | T | F | if (defined $rc[$position]) |
| 1752 | 50 | T | F | unless defined $value |
| 1754 | 100 | T | F | unless ($value =~ /[^[:ascii:]]/) |
| 1758 | 50 | T | F | unless utf8::is_utf8($value) |
| 1774 | 100 | T | F | if (ref $rules eq "HASH" and exists $rules->{'default'} and not exists $result{$key}) |
| 1779 | 100 | T | F | if (ref $rules eq "HASH" and $rules->{'schema'} and ref $result{$key} eq "HASH") |
| 1790 | 50 | T | F | unless ref $relationships eq "ARRAY" |
| 1793 | 50 | T | F | unless my $type = $rel->{'type'} |
| 1795 | 100 | T | F | if ($type eq 'mutually_exclusive') { } |
| 100 | T | F | elsif ($type eq 'required_group') { } |
| 100 | T | F | elsif ($type eq 'conditional_requirement') { } |
| 100 | T | F | elsif ($type eq 'dependency') { } |
| 100 | T | F | elsif ($type eq 'value_constraint') { } |
| 50 | T | F | elsif ($type eq 'value_conditional') { } |
| 1816 | 50 | T | F | unless $rel->{'params'} |
| 1817 | 50 | T | F | unless @params >= 2 |
| 1819 | 50 | T | F | if exists $args->{$_} |
| 1821 | 50 | T | F | if (@present > 1) |
| 1830 | 50 | T | F | unless $rel->{'params'} |
| 1831 | 50 | T | F | unless @params >= 2 |
| 1833 | 50 | T | F | if exists $args->{$_} |
| 1835 | 50 | T | F | if (@present == 0) |
| 1845 | 50 | T | F | unless my $if_param = $rel->{'if'} |
| 1846 | 50 | T | F | unless my $then_param = $rel->{'then_required'} |
| 1849 | 50 | T | F | if (exists $args->{$if_param} and defined $args->{$if_param}) |
| 1851 | 50 | T | F | if ($args->{$if_param}) |
| 1853 | 50 | T | F | unless (exists $args->{$then_param} and defined $args->{$then_param}) |
| 1864 | 50 | T | F | unless my $param = $rel->{'param'} |
| 1865 | 50 | T | F | unless my $requires = $rel->{'requires'} |
| 1868 | 50 | T | F | if (exists $args->{$param} and defined $args->{$param}) |
| 1869 | 50 | T | F | unless (exists $args->{$requires} and defined $args->{$requires}) |
| 1879 | 50 | T | F | unless my $if_param = $rel->{'if'} |
| 1880 | 50 | T | F | unless my $then_param = $rel->{'then'} |
| 1881 | 50 | T | F | unless my $operator = $rel->{'operator'} |
| 1883 | 50 | T | F | unless defined $value |
| 1886 | 50 | T | F | if (exists $args->{$if_param} and defined $args->{$if_param} and $args->{$if_param}) |
| 1888 | 50 | T | F | if (exists $args->{$then_param} and defined $args->{$then_param}) |
| 1892 | 50 | T | F | if ($operator eq '==') { } |
| 0 | T | F | elsif ($operator eq '!=') { } |
| 0 | T | F | elsif ($operator eq '<') { } |
| 0 | T | F | elsif ($operator eq '<=') { } |
| 0 | T | F | elsif ($operator eq '>') { } |
| 0 | T | F | elsif ($operator eq '>=') { } |
| 1906 | 50 | T | F | unless ($valid) |
| 1917 | 50 | T | F | unless my $if_param = $rel->{'if'} |
| 1919 | 50 | T | F | unless my $then_param = $rel->{'then_required'} |
| 1920 | 50 | T | F | unless defined $equals |
| 1923 | 50 | T | F | if (exists $args->{$if_param} and defined $args->{$if_param}) |
| 1924 | 50 | T | F | if ($args->{$if_param} eq $equals) |
| 1926 | 50 | T | F | unless (exists $args->{$then_param} and defined $args->{$then_param}) |
| 1942 | 100 | T | F | if ($logger) |
| 1956 | 100 | T | F | if ($logger) { } |