File Coverage

lib/WWW/Mechanize/FormFiller/Value/Random/Date.pm
Criterion Covered Total %
statement 49 60 81.6
branch 3 10 30.0
condition 13 16 81.2
subroutine 10 10 100.0
pod 2 2 100.0
total 77 98 78.5


line stmt bran cond sub pod time code
1             package WWW::Mechanize::FormFiller::Value::Random::Date;
2 1     2   468 use base 'WWW::Mechanize::FormFiller::Value';
  1         49  
  1         2  
3 1     2   3 use Carp qw(croak);
  1         104  
  1         26816  
4              
5 1     2   2 use vars qw( $VERSION );
  1         27  
  1         887  
6 1     2   3 use POSIX;
  1         2323  
  2         10  
7             $VERSION = '0.11';
8              
9             sub new {
10 2     3 1 5 my ($class,$name,%args) = @_;
11 2         79 my $self = $class->SUPER::new($name);
12 2 0       2149 %args = (string => '%Y%m%d') unless scalar (keys %args);
13 2   100     16087 $args{min} ||= undef;
14 2   100     13 $args{max} ||= undef;
15              
16 1         100 $self->{args} = \%args;
17              
18 1         2 $self;
19             };
20              
21             sub value {
22 1     5 1 19 my ($self,$input) = @_;
23 1         10 my $min = $self->{args}->{min};
24 1         1 my $max = $self->{args}->{max};
25              
26 1         77 for ($min, $max) {
27 3 0       16 $_ = strftime $self->{args}->{string}, gmtime()
28             if $_ eq "now";
29             };
30 3 0 66     30 croak "Minimum timestamp is greater or equal maximum timestamp"
      66        
31             if defined $max and defined $min and $max le $min;
32              
33 3         15 my $result;
34 3         17 RANDOM: {
35 3         18 my $timestamp = rand(0x7FFFFFFF);
36             #warn $self->{args}->{string};
37             #warn gmtime($timestamp);
38 3         19 $result = strftime $self->{args}->{string}, gmtime($timestamp);
39 3 50 66     16 redo RANDOM if defined $min and $result lt $min;
40 5 100 100     7 redo RANDOM if defined $max and $result ge $max;
41             };
42 5         17 $result;
43             };
44              
45             1;
46              
47             __END__