| line |
true |
false |
branch |
|
14
|
4 |
0 |
$] < 5.037 ? : |
|
70
|
1 |
4 |
!ref($_->[0]) && $_->[0] =~ /^!/ ? : |
|
211
|
0 |
3 |
if ref $class or $class ne "Data::Domain" |
|
215
|
1 |
2 |
ref $new_messages ? : |
|
|
0 |
3 |
unless $global_msgs = ref $new_messages ? $new_messages : $builtin_msgs->{$new_messages} |
|
224
|
33 |
957 |
if (not defined $data) { } |
|
226
|
7 |
26 |
if $self->{'-optional'} |
|
229
|
17 |
9 |
unless $self->isa("Data::Domain::Whatever") |
|
234
|
2 |
955 |
if (my $isa = $self->{'-isa'}) |
|
236
|
1 |
1 |
unless &try(sub {
$data->isa($isa);
}
) |
|
238
|
4 |
952 |
if (my $role = $self->{'-does'}) |
|
239
|
2 |
2 |
unless &does($data, $role) |
|
242
|
3 |
951 |
if (my $can = $self->{'-can'}) |
|
243
|
1 |
2 |
unless &does($can, "ARRAY") |
|
246
|
1 |
4 |
unless &try(sub {
$data->can($method);
}
) |
|
249
|
2 |
951 |
if (my $match_target = $self->{'-matches'}) |
|
250
|
1 |
1 |
unless match::simple::match($data, $match_target) |
|
253
|
1 |
951 |
if ($self->{'-has'}) |
|
256
|
1 |
0 |
if @msgs |
|
258
|
8 |
943 |
if (defined $self->{'-blessed'}) |
|
260
|
4 |
4 |
if &Scalar::Util::blessed($data) xor $self->{'-blessed'} |
|
262
|
3 |
944 |
if (defined $self->{'-package'}) |
|
264
|
2 |
1 |
if not ref $data and $data->isa($data) xor $self->{'-package'} |
|
266
|
0 |
945 |
if (defined $self->{'-isweak'}) |
|
268
|
0 |
0 |
if &Scalar::Util::isweak($data) xor $self->{'-isweak'} |
|
270
|
0 |
945 |
if (defined $self->{'-readonly'}) |
|
272
|
0 |
0 |
if &Scalar::Util::readonly($data) xor $self->{'-readonly'} |
|
274
|
0 |
945 |
if (defined $self->{'-tainted'}) |
|
276
|
0 |
0 |
if &Scalar::Util::readonly($data) xor $self->{'-tainted'} |
|
281
|
11 |
943 |
if (defined $self->{'-true'}) |
|
283
|
5 |
6 |
if $data xor $self->{'-true'} |
|
285
|
6 |
943 |
if (defined $self->{'-ref'}) |
|
287
|
3 |
3 |
if ref $data xor $self->{'-ref'} |
|
301
|
1 |
2 |
&does($meth_to_call, 'ARRAY') ? : |
|
304
|
0 |
3 |
if (&does($expectation, 'ARRAY')) { } |
|
315
|
2 |
1 |
if $msg |
|
329
|
0 |
0 |
if (&does($expectation, 'ARRAY')) { } |
|
340
|
0 |
0 |
if $msg |
|
365
|
11 |
231 |
if (defined $msgs) |
|
367
|
1 |
10 |
if /^CODE/ |
|
368
|
8 |
2 |
if /^$/ |
|
369
|
2 |
0 |
if $msg = $msgs->{$msg_id} |
|
|
2 |
0 |
if (/^HASH/) |
|
378
|
1 |
230 |
if ref $global_msgs eq "CODE" |
|
380
|
0 |
230 |
unless $msg = $global_msgs->{$subclass}{$msg_id} || $global_msgs->{'Generic'}{$msg_id} |
|
400
|
13 |
114 |
if (my $range = delete $self->{$range_field}) |
|
402
|
0 |
26 |
if defined $self->{$_} |
|
405
|
0 |
13 |
unless &does($range, "ARRAY") and @$range == 2 |
|
416
|
88 |
38 |
if ($cmp_func eq '<=') { } |
|
|
25 |
13 |
elsif ($cmp_func eq 'le') { } |
|
|
13 |
0 |
elsif (&does($cmp_func, 'CODE')) { } |
|
423
|
21 |
105 |
if (defined $min and defined $max) |
|
424
|
5 |
16 |
unless &$cmp_func($min, $max) |
|
435
|
1 |
475 |
unless @{$context->{'path'};} < $MAX_DEEP |
|
439
|
239 |
236 |
if (&does($domain, 'Data::Domain')) { } |
|
|
230 |
6 |
elsif (&does($domain, 'CODE')) { } |
|
|
6 |
0 |
elsif (not ref $domain) { } |
|
452
|
0 |
230 |
unless &does($domain, "Data::Domain") |
|
457
|
3 |
3 |
&Scalar::Util::looks_like_number($domain) ? : |
|
487
|
0 |
123 |
unless &any(sub {
$args_ref->[0] eq $_;
}
, @$options_ref, @common_options) |
|
494
|
24 |
129 |
if (@$args_ref) |
|
495
|
0 |
24 |
unless $default_option |
|
496
|
0 |
24 |
if exists $parsed{$default_option} |
|
498
|
18 |
0 |
$arg_type eq 'arrayref' ? : |
|
|
6 |
18 |
$arg_type eq 'scalar' ? : |
|
510
|
0 |
0 |
unless defined $path0 |
|
511
|
0 |
0 |
unless defined $root |
|
512
|
0 |
0 |
if &does($root, "HASH") |
|
514
|
0 |
0 |
if &does($root, "ARRAY") |
|
554
|
0 |
2 |
if $self->{'-defined'} and $self->{'-optional'} |
|
562
|
9 |
23 |
if (defined $self->{'-defined'}) |
|
564
|
5 |
4 |
if defined $data xor $self->{'-defined'} |
|
614
|
1 |
48 |
if ($self->{'-not_in'}) |
|
616
|
1 |
0 |
if @$vals > 0 |
|
617
|
0 |
1 |
unless &try(sub {
my $vals = $self->{'-not_in'};
not grep({not &looks_like_number($_);} @$vals) if @$vals > 0;
}
) |
|
626
|
107 |
193 |
unless &looks_like_number($data) |
|
629
|
31 |
162 |
if (defined $self->{'-min'}) |
|
631
|
6 |
25 |
unless $data >= $self->{'-min'} |
|
633
|
12 |
175 |
if (defined $self->{'-max'}) |
|
635
|
4 |
8 |
unless $data <= $self->{'-max'} |
|
637
|
5 |
178 |
if (defined $self->{'-not_in'}) |
|
638
|
2 |
3 |
if grep {$data == $_;} @{$$self{"-not_in"};} |
|
657
|
21 |
62 |
unless defined $data and $data =~ /^-?\d+$/ |
|
674
|
1 |
2 |
unless defined $data and $data =~ /^\d+$/ |
|
710
|
3 |
159 |
unless not ref $data or overload::Method($data, "\"\"") |
|
712
|
6 |
153 |
if ($self->{'-min_length'}) |
|
714
|
1 |
5 |
unless length $data >= $self->{'-min_length'} |
|
716
|
5 |
153 |
if (defined $self->{'-max_length'}) |
|
718
|
3 |
2 |
unless length $data <= $self->{'-max_length'} |
|
720
|
132 |
23 |
if ($self->{'-regex'}) |
|
722
|
13 |
119 |
unless $data =~ /$self->{'-regex'}/ |
|
724
|
2 |
140 |
if ($self->{'-antiregex'}) |
|
726
|
1 |
1 |
if $data =~ /$self->{'-antiregex'}/ |
|
728
|
4 |
137 |
if (defined $self->{'-min'}) |
|
730
|
1 |
3 |
unless $data ge $self->{'-min'} |
|
732
|
3 |
137 |
if (defined $self->{'-max'}) |
|
734
|
1 |
2 |
unless $data le $self->{'-max'} |
|
736
|
1 |
138 |
if ($self->{'-not_in'}) |
|
737
|
0 |
1 |
if grep {$data eq $_;} @{$$self{"-not_in"};} |
|
774
|
7 |
35 |
unless (ref $date) |
|
779
|
0 |
7 |
unless $date = {"today", [Today()], "yesterday", [Add_Delta_Days(Today(), -1)], "tomorrow", [Add_Delta_Days(Today(), 1)]}->{$date} |
|
796
|
0 |
1 |
if ref $class |
|
802
|
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} |
|
818
|
6 |
15 |
if ($self->{$bound} and not $self->{$bound} =~ /$dynamic_date/) |
|
819
|
1 |
5 |
unless my(@date) = &$date_parser($self->{$bound}) |
|
829
|
1 |
8 |
if ($self->{'-not_in'}) |
|
833
|
1 |
1 |
if ($date =~ /$dynamic_date/) { } |
|
837
|
0 |
1 |
unless my(@parsed_date) = &$date_parser($date) |
|
843
|
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;
}
) |
|
855
|
4 |
14 |
unless @date and check_date(@date) |
|
858
|
6 |
8 |
if (defined $self->{'-min'}) |
|
861
|
2 |
4 |
if not check_date(@$min) or _date_cmp(\@date, $min) < 0 |
|
864
|
3 |
9 |
if (defined $self->{'-max'}) |
|
867
|
1 |
2 |
if not check_date(@$max) or _date_cmp(\@date, $max) > 0 |
|
870
|
2 |
9 |
if ($self->{'-not_in'}) |
|
871
|
1 |
1 |
if grep {_date_cmp(\@date, $_) == 0;} @{$$self{"-not_in"};} |
|
899
|
0 |
16 |
unless (ref $time) |
|
900
|
0 |
0 |
unless $time eq "now" |
|
917
|
2 |
4 |
unless $_ |
|
931
|
4 |
2 |
if ($self->{$bound} and $self->{$bound} ne "now") |
|
933
|
0 |
4 |
unless @time and _valid_time(@time) |
|
950
|
2 |
4 |
unless @t and _valid_time(@t) |
|
953
|
3 |
1 |
if (defined $self->{'-min'}) |
|
955
|
1 |
2 |
if _time_cmp(\@t, $self->{'-min'}) < 0 |
|
958
|
2 |
1 |
if (defined $self->{'-max'}) |
|
960
|
1 |
1 |
if _time_cmp(\@t, $self->{'-max'}) > 0 |
|
985
|
1 |
2 |
unless &Scalar::Util::openhandle($data) |
|
1009
|
0 |
5 |
unless &try(sub {
@{$self->{'-values'};};
}
) |
|
1011
|
1 |
4 |
if grep {not defined $_;} @{$$self{"-values"};} |
|
1022
|
2 |
4 |
unless grep {$_ eq $data;} @{$$self{"-values"};} |
|
1047
|
5 |
7 |
if ($self->{'-items'}) |
|
1048
|
0 |
5 |
unless &does($self->{'-items'}, "ARRAY") |
|
1054
|
0 |
10 |
if $self->{$bound} and $self->{$bound} < @{$self->{'-items'};} |
|
1060
|
8 |
16 |
if (my $dom = $self->{$arg}) |
|
1061
|
7 |
1 |
unless &does($dom, "ARRAY") |
|
1062
|
1 |
8 |
unless &does($_, "Data::Domain") |
|
|
0 |
8 |
unless &all(sub {
&does($_, "CODE") unless &does($_, "Data::Domain");
}
, @$dom) |
|
1075
|
1 |
37 |
unless &does($data, "ARRAY") |
|
1078
|
1 |
36 |
if (defined $self->{'-min_size'} and @$data < $self->{'-min_size'}) |
|
1082
|
1 |
35 |
if (defined $self->{'-max_size'} and @$data > $self->{'-max_size'}) |
|
1086
|
2 |
6 |
unless $self->{'-items'} or $self->{'-all'} or $self->{'-any'} |
|
1104
|
0 |
50 |
unless my $subdomain = $self->_build_subdomain($items->[$i], $context) |
|
1111
|
8 |
25 |
if (my $all = $self->{'-all'}) |
|
1112
|
8 |
0 |
unless &does($all, "ARRAY") |
|
1125
|
9 |
24 |
if $has_invalid |
|
1128
|
13 |
11 |
if (my $any = $self->{'-any'}) |
|
1129
|
9 |
4 |
unless &does($any, "ARRAY") |
|
1133
|
1 |
12 |
unless $n_data > $n_items |
|
1143
|
11 |
20 |
unless $error |
|
1169
|
13 |
1 |
if (&does($fields, 'ARRAY')) { } |
|
|
1 |
0 |
elsif (&does($fields, 'HASH')) { } |
|
1188
|
3 |
11 |
if (my $exclude = $self->{'-exclude'}) |
|
1189
|
0 |
2 |
unless &does($exclude, "ARRAY") or &does($exclude, "Regexp") or not ref $exclude |
|
1196
|
2 |
26 |
if (my $dom = $self->{$arg}) |
|
1197
|
0 |
2 |
unless &does($dom, "Data::Domain::List") or &does($dom, "CODE") |
|
1211
|
2 |
136 |
unless &does($data, "HASH") |
|
1217
|
10 |
126 |
if (my $exclude = $self->{'-exclude'}) |
|
1221
|
5 |
5 |
match::simple::match($exclude, ['*', 'all']) ? : |
|
1222
|
7 |
3 |
if @wrong_fields |
|
1239
|
14 |
247 |
if $msg |
|
1243
|
3 |
33 |
if (my $keys_dom = $self->{'-keys'}) |
|
1247
|
1 |
2 |
if $msg |
|
1251
|
3 |
33 |
if (my $values_dom = $self->{'-values'}) |
|
1255
|
1 |
2 |
if $msg |
|
1258
|
17 |
19 |
keys %msgs ? : |
|
1275
|
0 |
2 |
unless &Scalar::Does::does($self->{'-options'}, "ARRAY") |
|
1288
|
109 |
112 |
unless my $msg = $subdomain->inspect($data, $context) |
|
1310
|
0 |
1 |
unless &Scalar::Does::does($self->{'-options'}, "ARRAY") |
|
1324
|
2 |
4 |
if $msg |
|
1326
|
2 |
1 |
@msgs ? : |