I've encountered a bug in DT::Infinite math. It seems that adding a
number of days to DT::Infinite::Future results in a DT::I::Future object
again, but adding a number of years changes it.
For example:
my $dt = DateTime->now;
my $dt_inf = DateTime::Infinite::Future->new;
print $dt_inf>$dt ? 'OK' : 'NOK', ' ', $dt_inf->year;
$dt_inf->add( days => 20 );
print $dt_inf>$dt ? 'OK' : 'NOK', ' ', $dt_inf->year;
$dt_inf->add( years => 20 );
print $dt_inf>$dt ? 'OK' : 'NOK', ' ', $dt_inf->year;
Output:
OK inf
OK inf
NOK -793
I presume that this is because the code for adding days is much simpler
than the code for adding months. I don't know how best to fix this;
perhaps a separate DT::Infinite::add_duration method?
Eugene