File Coverage

lib/WWW/Mechanize/FormFiller/Value/Random/Date.pm
Criterion Covered Total %
statement 49 60 81.6
branch 3 10 30.0
condition 12 16 75.0
subroutine 10 10 100.0
pod 2 2 100.0
total 76 98 77.5


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