Hi,
It's a bit tricky to say which particular module needs to be changed to fix
this bug, hence I am not using RT for reporting it. The good part is that
all candidate modules appear to have the same author. :-)
The test case is as follows:
#! /usr/bin/perl
use strict;
use warnings;
use DateTime;
use DateTime::Duration;
use DateTime::Span;
use Data::Dumper;
my $bad_s = DateTime->new(year => 2009, month => 1, day => 12, hour => 1,
minute => 0, second => 0);
my $bad_e = DateTime->new(year => 2009, month => 1, day => 12, hour => 6,
minute => 0, second => 0);
my $bad = DateTime::Span->from_datetimes(start => $bad_s, end => $bad_e);
my $good = $bad->complement;
my $interest_s = DateTime->new(year => 2009, month => 1, day => 12, hour =>
4, minute => 30, second => 0);
my $interest_e = DateTime->new(year => 2009, month => 1, day => 12, hour =>
5, minute => 0, second => 0);
my $interest = DateTime::Span->from_datetimes(start => $interest_s, end =>
$interest_e);
my $r = $interest->intersection($good);
my $d = $r->duration;
print Dumper $d;
my $d0 = DateTime::Duration->new(seconds => 0);
print Dumper $d0;
I would certainly expect for the duration $d of the empty set $r to be the
same duration as $d0, that is, zero seconds. Instead it behaves more like
infinity.
Is that something that you might be interesting in fixing?
Thanks,
\Anton.
--
There is no beauty in entropy. -- Eliezer Yudkowsky