1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
#!/usr/bin/perl -w
use strict;
use Test::More;
plan tests => 8;
use DateTime;
use DateTime::Duration;
use DateTime::Set;
#======================================================================
# SPAN TESTS
#======================================================================
{
my $t1 = new DateTime( year => 1810, month => 11, day => 22 );
my $t2 = new DateTime( year => 1900, month => 11, day => 22 );
my $s1 = DateTime::Span->from_datetime_and_duration( start => $t1, hours => 2 );
my $res = $s1->min->ymd.'T'.$s1->min->hms;
ok( $res eq '1810-11-22T00:00:00',
"got $res - min" );
$res = $s1->max->ymd.'T'.$s1->max->hms;
ok( $res eq '1810-11-22T02:00:00',
"got $res - max" );
}
{
my $t1 = new DateTime( year => 1800 );
my $t2 = new DateTime( year => 1900 );
my $mid = new DateTime( year => 1850 );
my $span = DateTime::Span->from_datetimes( start => $t1, end => $t2 );
ok( $span->contains($mid),
"Span should contain datetime in between start and end" );
}
{
# infinite span
my $span = DateTime::Span->from_datetimes( start => DateTime->today )->union(
DateTime::Span->from_datetimes( end => DateTime->today ) );
isa_ok( $span, "DateTime::SpanSet" , "union of spans gives a spanset" );
ok( $span->min->is_infinite, "infinite start" );
ok( $span->max->is_infinite, "infinite end" );
is( $span->duration->seconds , DateTime::Set::INFINITY, "infinite duration" );
}
{
# empty span
my $span1 = DateTime::Span->from_datetimes(
start => DateTime->new( year => 2000 ),
end => DateTime->new( year => 2001 ) );
my $span2 = DateTime::Span->from_datetimes(
start => DateTime->new( year => 2003 ),
end => DateTime->new( year => 2004 ) );
my $empty = $span1->intersection($span2);
is( $empty->duration->seconds , 0, "null duration" );
}
1;
|