The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#! /usr/bin/perl -w
use strict;

use Astro::WCS::LibWCS qw( :functions );

my $ntests = 13;
print "1..$ntests\n";

my $date = 1999.0302; # March 2, 1999
my $time = 6.00000000; # 6 am
my $jd = 2451239.75;
my $epoch = 1999.16506849315;
my $fd = '1999-03-02T06:00:00.000';
my $ts = 1551506400;
my ($iyr, $imon, $iday, $ihr, $imin, $sec) =
    (1999, 3, 2, 6, 0, 0);

#
# dt2jd()
#
print( dt2jd($date,$time) == $jd ? ok() : not_ok() );

#
# jd2dt()
#
my ($date_tmp,$time_tmp);
jd2dt($jd,$date_tmp,$time_tmp);
print( ($date_tmp == $date && $time_tmp == $time) ? ok() : not_ok() );

#
# jd2ep()
#
print( equal(jd2ep($jd),$epoch,1e-12) ? ok() : not_ok() );

#
# ep2fd()
#
print( ep2fd($epoch) eq $fd ? ok() : not_ok() );

#
# ep2ts()
#
print( equal(ep2ts($epoch),$ts,1e-2) ? ok() : not_ok() );

#
# ep2jd()
#
print( equal(ep2jd($epoch),$jd,1e-5) ? ok() : not_ok() );

#
# jd2fd()
#
print( jd2fd($jd) eq $fd ? ok() : not_ok() );

#
# jd2ts()
#
print( equal(jd2ts($jd),$ts,1e-3) ? ok() : not_ok() );

#
# ts2jd()
#
print( equal(ts2jd($ts),$jd,1e-2) ? ok() : not_ok() );

#
# dt2ep()
#
print( equal(dt2ep($date,$time),$epoch,1e-12) ? ok() : not_ok() );

#
# ep2dt()
#
$date_tmp = $time_tmp = 0;
ep2dt($epoch,$date_tmp,$time_tmp);
print( $date_tmp == $date && equal($time_tmp,$time,1e-9) ? ok() : not_ok() );

#
# fd2jd()
#
print( fd2jd($fd) == $jd ? ok() : not_ok() );

#
# dt2fd
#
print ( dt2fd($date,$time) eq $fd ? ok() : not_ok() );

#
# dt2i
#

sub ok {
    return "ok\n";
}

sub not_ok {
    return "not ok\n";
}

sub equal {
    my ($n1, $n2, $range) = @_;

    return 1 if (abs($n1-$n2) < $range);

    return 0;
}