line |
true |
false |
branch |
15
|
4 |
0 |
$] < 5.037 ? : |
73
|
1 |
4 |
!ref($_->[0]) && $_->[0] =~ /^!/ ? : |
214
|
0 |
3 |
if ref $class or $class ne "Data::Domain" |
218
|
1 |
2 |
ref $new_messages ? : |
|
0 |
3 |
unless $global_msgs = ref $new_messages ? $new_messages : $builtin_msgs->{$new_messages} |
227
|
33 |
949 |
if (not defined $data) { } |
229
|
7 |
26 |
if $self->{'-optional'} |
232
|
17 |
9 |
unless $self->isa("Data::Domain::Whatever") |
237
|
2 |
947 |
if (my $isa = $self->{'-isa'}) |
239
|
1 |
1 |
unless &try(sub {
$data->isa($isa);
}
) |
241
|
4 |
944 |
if (my $role = $self->{'-does'}) |
242
|
2 |
2 |
unless &does($data, $role) |
245
|
3 |
943 |
if (my $can = $self->{'-can'}) |
246
|
1 |
2 |
unless &does($can, "ARRAY") |
249
|
1 |
4 |
unless &try(sub {
$data->can($method);
}
) |
252
|
2 |
943 |
if (my $match_target = $self->{'-matches'}) |
253
|
1 |
1 |
unless match::simple::match($data, $match_target) |
256
|
1 |
943 |
if ($self->{'-has'}) |
259
|
1 |
0 |
if @msgs |
261
|
8 |
935 |
if (defined $self->{'-blessed'}) |
263
|
4 |
4 |
if &Scalar::Util::blessed($data) xor $self->{'-blessed'} |
265
|
3 |
936 |
if (defined $self->{'-package'}) |
267
|
2 |
1 |
if not ref $data and $data->isa($data) xor $self->{'-package'} |
269
|
0 |
937 |
if (defined $self->{'-isweak'}) |
271
|
0 |
0 |
if &Scalar::Util::isweak($data) xor $self->{'-isweak'} |
273
|
0 |
937 |
if (defined $self->{'-readonly'}) |
275
|
0 |
0 |
if &Scalar::Util::readonly($data) xor $self->{'-readonly'} |
277
|
0 |
937 |
if (defined $self->{'-tainted'}) |
279
|
0 |
0 |
if &Scalar::Util::readonly($data) xor $self->{'-tainted'} |
284
|
11 |
935 |
if (defined $self->{'-true'}) |
286
|
5 |
6 |
if $data xor $self->{'-true'} |
288
|
6 |
935 |
if (defined $self->{'-ref'}) |
290
|
3 |
3 |
if ref $data xor $self->{'-ref'} |
304
|
1 |
2 |
&does($meth_to_call, 'ARRAY') ? : |
307
|
0 |
3 |
if (&does($expectation, 'ARRAY')) { } |
318
|
2 |
1 |
if $msg |
332
|
0 |
0 |
if (&does($expectation, 'ARRAY')) { } |
343
|
0 |
0 |
if $msg |
368
|
11 |
229 |
if (defined $msgs) |
370
|
1 |
10 |
if /^CODE/ |
371
|
8 |
2 |
if /^$/ |
372
|
2 |
0 |
if $msg = $msgs->{$msg_id} |
|
2 |
0 |
if (/^HASH/) |
381
|
1 |
228 |
if ref $global_msgs eq "CODE" |
383
|
0 |
228 |
unless $msg = $global_msgs->{$subclass}{$msg_id} || $global_msgs->{'Generic'}{$msg_id} |
403
|
13 |
114 |
if (my $range = delete $self->{$range_field}) |
405
|
0 |
26 |
if defined $self->{$_} |
408
|
0 |
13 |
unless &does($range, "ARRAY") and @$range == 2 |
419
|
88 |
38 |
if ($cmp_func eq '<=') { } |
|
25 |
13 |
elsif ($cmp_func eq 'le') { } |
|
13 |
0 |
elsif (&does($cmp_func, 'CODE')) { } |
426
|
21 |
105 |
if (defined $min and defined $max) |
427
|
5 |
16 |
unless &$cmp_func($min, $max) |
438
|
1 |
468 |
unless @{$context->{'path'};} < $MAX_DEEP |
442
|
232 |
236 |
if (&does($domain, 'Data::Domain')) { } |
|
230 |
6 |
elsif (&does($domain, 'CODE')) { } |
|
6 |
0 |
elsif (not ref $domain) { } |
455
|
0 |
230 |
unless &does($domain, "Data::Domain") |
460
|
3 |
3 |
&Scalar::Util::looks_like_number($domain) ? : |
490
|
0 |
123 |
unless &any(sub {
$args_ref->[0] eq $_;
}
, @$options_ref, @common_options) |
497
|
24 |
129 |
if (@$args_ref) |
498
|
0 |
24 |
unless $default_option |
499
|
0 |
24 |
if exists $parsed{$default_option} |
501
|
18 |
0 |
$arg_type eq 'arrayref' ? : |
|
6 |
18 |
$arg_type eq 'scalar' ? : |
544
|
0 |
2 |
if $self->{'-defined'} and $self->{'-optional'} |
552
|
9 |
23 |
if (defined $self->{'-defined'}) |
554
|
5 |
4 |
if defined $data xor $self->{'-defined'} |
604
|
1 |
48 |
if ($self->{'-not_in'}) |
606
|
1 |
0 |
if @$vals > 0 |
607
|
0 |
1 |
unless &try(sub {
my $vals = $self->{'-not_in'};
not grep({not &looks_like_number($_);} @$vals) if @$vals > 0;
}
) |
616
|
107 |
187 |
unless &looks_like_number($data) |
619
|
31 |
156 |
if (defined $self->{'-min'}) |
621
|
6 |
25 |
unless $data >= $self->{'-min'} |
623
|
12 |
169 |
if (defined $self->{'-max'}) |
625
|
4 |
8 |
unless $data <= $self->{'-max'} |
627
|
5 |
172 |
if (defined $self->{'-not_in'}) |
628
|
2 |
3 |
if grep {$data == $_;} @{$$self{"-not_in"};} |
647
|
20 |
56 |
unless defined $data and $data =~ /^-?\d+$/ |
664
|
1 |
2 |
unless defined $data and $data =~ /^\d+$/ |
700
|
3 |
159 |
unless not ref $data or overload::Method($data, "\"\"") |
702
|
6 |
153 |
if ($self->{'-min_length'}) |
704
|
1 |
5 |
unless length $data >= $self->{'-min_length'} |
706
|
5 |
153 |
if (defined $self->{'-max_length'}) |
708
|
3 |
2 |
unless length $data <= $self->{'-max_length'} |
710
|
132 |
23 |
if ($self->{'-regex'}) |
712
|
13 |
119 |
unless $data =~ /$self->{'-regex'}/ |
714
|
2 |
140 |
if ($self->{'-antiregex'}) |
716
|
1 |
1 |
if $data =~ /$self->{'-antiregex'}/ |
718
|
4 |
137 |
if (defined $self->{'-min'}) |
720
|
1 |
3 |
unless $data ge $self->{'-min'} |
722
|
3 |
137 |
if (defined $self->{'-max'}) |
724
|
1 |
2 |
unless $data le $self->{'-max'} |
726
|
1 |
138 |
if ($self->{'-not_in'}) |
727
|
0 |
1 |
if grep {$data eq $_;} @{$$self{"-not_in"};} |
764
|
7 |
35 |
unless (ref $date) |
769
|
0 |
7 |
unless $date = {"today", [Today()], "yesterday", [Add_Delta_Days(Today(), -1)], "tomorrow", [Add_Delta_Days(Today(), 1)]}->{$date} |
786
|
0 |
1 |
if ref $class |
792
|
1 |
0 |
ref $new_parser eq 'CODE' ? : |
|
0 |
1 |
unless $date_parser = ref $new_parser eq "CODE" ? $new_parser : {"US", \&Data::Domain::Date::Decode_Date_US, "EU", \&Data::Domain::Date::Decode_Date_EU}->{$new_parser} |
808
|
6 |
15 |
if ($self->{$bound} and not $self->{$bound} =~ /$dynamic_date/) |
809
|
1 |
5 |
unless my(@date) = &$date_parser($self->{$bound}) |
819
|
1 |
8 |
if ($self->{'-not_in'}) |
823
|
1 |
1 |
if ($date =~ /$dynamic_date/) { } |
827
|
0 |
1 |
unless my(@parsed_date) = &$date_parser($date) |
833
|
0 |
1 |
unless &try(sub {
foreach my $date (@{$$self{"-not_in"};}) {
if ($date =~ /$dynamic_date/) {
push @excl_dates, $date;
}
else {
die "wrong date" unless my(@parsed_date) = &$date_parser($date);
push @excl_dates, \@parsed_date;
};
};
@excl_dates > 0;
}
) |
845
|
4 |
14 |
unless @date and check_date(@date) |
848
|
6 |
8 |
if (defined $self->{'-min'}) |
851
|
2 |
4 |
if not check_date(@$min) or _date_cmp(\@date, $min) < 0 |
854
|
3 |
9 |
if (defined $self->{'-max'}) |
857
|
1 |
2 |
if not check_date(@$max) or _date_cmp(\@date, $max) > 0 |
860
|
2 |
9 |
if ($self->{'-not_in'}) |
861
|
1 |
1 |
if grep {_date_cmp(\@date, $_) == 0;} @{$$self{"-not_in"};} |
889
|
0 |
16 |
unless (ref $time) |
890
|
0 |
0 |
unless $time eq "now" |
907
|
2 |
4 |
unless $_ |
921
|
4 |
2 |
if ($self->{$bound} and $self->{$bound} ne "now") |
923
|
0 |
4 |
unless @time and _valid_time(@time) |
940
|
2 |
4 |
unless @t and _valid_time(@t) |
943
|
3 |
1 |
if (defined $self->{'-min'}) |
945
|
1 |
2 |
if _time_cmp(\@t, $self->{'-min'}) < 0 |
948
|
2 |
1 |
if (defined $self->{'-max'}) |
950
|
1 |
1 |
if _time_cmp(\@t, $self->{'-max'}) > 0 |
975
|
1 |
2 |
unless &Scalar::Util::openhandle($data) |
999
|
0 |
5 |
unless &try(sub {
@{$self->{'-values'};};
}
) |
1001
|
1 |
4 |
if grep {not defined $_;} @{$$self{"-values"};} |
1012
|
2 |
4 |
unless grep {$_ eq $data;} @{$$self{"-values"};} |
1037
|
5 |
7 |
if ($self->{'-items'}) |
1038
|
0 |
5 |
unless &does($self->{'-items'}, "ARRAY") |
1044
|
0 |
10 |
if $self->{$bound} and $self->{$bound} < @{$self->{'-items'};} |
1050
|
8 |
16 |
if (my $dom = $self->{$arg}) |
1051
|
7 |
1 |
unless &does($dom, "ARRAY") |
1052
|
1 |
8 |
unless &does($_, "Data::Domain") |
|
0 |
8 |
unless &all(sub {
&does($_, "CODE") unless &does($_, "Data::Domain");
}
, @$dom) |
1065
|
1 |
37 |
unless &does($data, "ARRAY") |
1068
|
1 |
36 |
if (defined $self->{'-min_size'} and @$data < $self->{'-min_size'}) |
1072
|
1 |
35 |
if (defined $self->{'-max_size'} and @$data > $self->{'-max_size'}) |
1076
|
2 |
6 |
unless $self->{'-items'} or $self->{'-all'} or $self->{'-any'} |
1094
|
0 |
50 |
unless my $subdomain = $self->_build_subdomain($items->[$i], $context) |
1101
|
8 |
25 |
if (my $all = $self->{'-all'}) |
1102
|
8 |
0 |
unless &does($all, "ARRAY") |
1115
|
9 |
24 |
if $has_invalid |
1118
|
13 |
11 |
if (my $any = $self->{'-any'}) |
1119
|
9 |
4 |
unless &does($any, "ARRAY") |
1123
|
1 |
12 |
unless $n_data > $n_items |
1133
|
11 |
20 |
unless $error |
1159
|
13 |
1 |
if (&does($fields, 'ARRAY')) { } |
|
1 |
0 |
elsif (&does($fields, 'HASH')) { } |
1178
|
3 |
11 |
if (my $exclude = $self->{'-exclude'}) |
1179
|
0 |
2 |
unless &does($exclude, "ARRAY") or &does($exclude, "Regexp") or not ref $exclude |
1186
|
2 |
26 |
if (my $dom = $self->{$arg}) |
1187
|
0 |
2 |
unless &does($dom, "Data::Domain::List") or &does($dom, "CODE") |
1201
|
2 |
135 |
unless &does($data, "HASH") |
1205
|
9 |
126 |
if (my $exclude = $self->{'-exclude'}) |
1208
|
5 |
8 |
if $self->{'-fields'}{$field} |
1210
|
6 |
2 |
if match::simple::match($field, $exclude) or match::simple::match($exclude, ["*", "all"]) |
1232
|
13 |
241 |
if $msg |
1237
|
3 |
26 |
if (my $keys_dom = $self->{'-keys'}) |
1240
|
1 |
2 |
if $msgs{'-keys'} = $subdomain->inspect([keys %$data], $context) |
1245
|
3 |
26 |
if (my $values_dom = $self->{'-values'}) |
1248
|
1 |
2 |
if $msgs{'-values'} = $subdomain->inspect([values %$data], $context) |
1252
|
10 |
19 |
$has_invalid ? : |
1269
|
0 |
2 |
unless &Scalar::Does::does($self->{'-options'}, "ARRAY") |
1282
|
109 |
112 |
unless my $msg = $subdomain->inspect($data, $context) |
1304
|
0 |
1 |
unless &Scalar::Does::does($self->{'-options'}, "ARRAY") |
1318
|
2 |
4 |
if $msg |
1320
|
2 |
1 |
@msgs ? : |