use strict;
use Test::More tests => 16;
use DateTime;
my @mjd = ( '51603.524' =>
{ year => 2000,
month => 2,
day => 29,
hour => 12,
minute => 34,
second => 56,
},
'40598.574' =>
{ year => 1970,
month => 1,
day => 12,
hour => 13,
minute => 46,
second => 51,
},
'52411.140' =>
{ year => 2002,
month => 5,
day => 17,
hour => 3,
minute => 21,
second => 43,
},
'53568.547' =>
{ year => 2005,
month => 7,
day => 17,
hour => 13,
minute => 8,
second => 23,
},
'52295.218' =>
{ year => 2002,
month => 1,
day => 21,
hour => 5,
minute => 13,
second => 20,
},
'52295.399' =>
{ year => 2002,
month => 1,
day => 21,
hour => 9,
minute => 35,
second => 3,
},
'0.000' =>
{ year => 1858,
month => 11,
day => 17,
hour => 0,
minute => 0,
second => 0,
},
'-2400000.500' =>
{ year => -4713,
month => 11,
day => 24,
hour => 12,
minute => 0,
second => 0,
},
);
while ( my ( $mjd, $comps ) = splice @mjd, 0, 2 )
{
my $dt = DateTime->new( %$comps,
time_zone => 'UTC',
);
is( sprintf( '%.3f', $dt->mjd ), $mjd, "MJD should be $mjd" );
my $jd = sprintf( '%.3f', $mjd + 2_400_000.5 );
is( sprintf( '%.3f', $dt->jd ), $jd, "JD should be $jd" );
}