File Coverage

blib/lib/Number/Tolerant/Type/or_less.pm
Criterion Covered Total %
statement 23 23 100.0
branch 10 10 100.0
condition n/a
subroutine 6 6 100.0
pod 3 3 100.0
total 42 42 100.0


line stmt bran cond sub pod time code
1 25     25   168 use strict;
  25         78  
  25         1411  
2 25     25   299 use warnings;
  25         88  
  25         1726  
3             # ABSTRACT: a tolerance "m <= n"
4              
5             package
6             Number::Tolerant::Type::or_less;
7 25     25   166 use parent qw(Number::Tolerant::Type);
  25         62  
  25         157  
8              
9 14     14 1 28 sub construct { shift; { value => $_[0], max => $_[0] } }
  14         67  
10              
11             sub parse {
12 20     20 1 56 my ($self, $string, $factory) = @_;
13              
14 20         137 my $number = $self->number_re;
15 20         135 my $X = $self->variable_re;
16              
17 20 100       1104 return $factory->new("$1", 'or_less') if $string =~ m!\A$X?<=\s*($number)\z!;
18 19 100       1505 return $factory->new("$1", 'or_less') if $string =~ m!\A($number)\s*>=$X\z!;
19 18 100       1050 return $factory->new("$1", 'or_less')
20             if $string =~ m!\A($number)\s+or\s+less\z!;
21              
22 17         107 return;
23             }
24              
25             sub valid_args {
26 88     88 1 179 my $self = shift;
27              
28 88 100       202 return unless 2 == grep { defined } @_;
  204         547  
29 37 100       173 return unless $_[1] eq 'or_less';
30              
31 14         56 return $self->normalize_number($_[0]);
32             }
33              
34             1;
35              
36             __END__