File Coverage

blib/lib/DateTimeX/Lite/Infinite.pm
Criterion Covered Total %
statement 42 45 93.3
branch 6 6 100.0
condition n/a
subroutine 15 18 83.3
pod 5 7 71.4
total 68 76 89.4


line stmt bran cond sub pod time code
1             # $Id: Infinite.pm 27589 2008-12-29 23:51:35Z daisuke $
2              
3             package DateTimeX::Lite::Infinite;
4 56     56   340 use strict;
  56         118  
  56         2473  
5 56     56   326 use base qw(DateTimeX::Lite);
  56         106  
  56         7602  
6 56     56   36176 use DateTimeX::Lite::TimeZone;
  56         267  
  56         27637  
7              
8 0     0 1 0 sub set { $_[0] }
9 2     2 1 7 sub set_time_zone { $_[0] }
10 0     0 1 0 sub truncate { $_[0] }
11 2     2 1 8 sub is_finite { 0 }
12 6     6 1 44 sub is_infinite { 1 }
13              
14             sub _calc_local_components {
15 4     4   6 my $self = shift;
16              
17 4         17 my @list = qw(
18             year month day day_of_week day_of_year quarter day_of_quarter
19             hour minute second
20             );
21 4         13 @{ $self->{local_c} }{ @list } = (
  4         33  
22             ( $self->{local_rd_days} ) x 7,
23             ( $self->{local_rd_secs} ) x 3,
24             );
25             }
26              
27             sub _stringify_overload {
28 10 100   10   580 return $_[0]->{utc_rd_days} == &DateTimeX::Lite::INFINITY ?
29             (&DateTimeX::Lite::INFINITY . '') :
30             (&DateTimeX::Lite::NEG_INFINITY . '')
31             }
32              
33 2     2 0 1147 sub STORABLE_freeze { return }
34 0     0 0 0 sub STORABLE_thaw { return }
35              
36             package #
37             DateTimeX::Lite::Infinite::Future;
38 56     56   547 use strict;
  56         166  
  56         3612  
39 56     56   373 use base qw(DateTimeX::Lite::Infinite);
  56         163  
  56         14537  
40              
41             {
42             my $Pos;
43              
44             sub new {
45 3 100   3   24 return $Pos if $Pos;
46              
47 2         5 my $class = shift;
48 2         31 $Pos = bless {
49             utc_rd_days => &DateTimeX::Lite::INFINITY,
50             utc_rd_secs => &DateTimeX::Lite::INFINITY,
51             local_rd_days => &DateTimeX::Lite::INFINITY,
52             local_rd_secs => &DateTimeX::Lite::INFINITY,
53             rd_nanosecs => &DateTimeX::Lite::INFINITY,
54             tz => DateTimeX::Lite::TimeZone->load( name => 'floating' ),
55             }, $class;
56              
57 2         21 $Pos->_calc_utc_rd;
58 2         17 $Pos->_calc_local_rd;
59 2         7 return $Pos;
60             }
61             }
62              
63             package #
64             DateTimeX::Lite::Infinite::Past;
65 56     56   367 use strict;
  56         149  
  56         2046  
66 56     56   313 use base qw(DateTimeX::Lite::Infinite);
  56         115  
  56         12521  
67              
68             {
69             my $Neg;
70             sub new {
71 3 100   3   18 return $Neg if $Neg;
72              
73 2         4 my $class = shift;
74 2         19 $Neg = bless {
75             utc_rd_days => &DateTimeX::Lite::NEG_INFINITY,
76             utc_rd_secs => &DateTimeX::Lite::NEG_INFINITY,
77             local_rd_days => &DateTimeX::Lite::NEG_INFINITY,
78             local_rd_secs => &DateTimeX::Lite::NEG_INFINITY,
79             rd_nanosecs => &DateTimeX::Lite::NEG_INFINITY,
80             tz => DateTimeX::Lite::TimeZone->load( name => 'floating' ),
81             }, $class;
82              
83 2         15 $Neg->_calc_utc_rd;
84 2         13 $Neg->_calc_local_rd;
85 2         11 return $Neg;
86             }
87             }
88              
89             1;
90              
91             __END__