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

Reply via email to