The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl
use strict;
use Test::More tests => 32;

BEGIN
{
	use_ok('DateTime::Util::Calc', 'moment', 'dt_from_moment');
	use_ok('DateTime');
}

# generate $n random dates, and calculate moment values from each
my $now = time();

for (1..5) {
    my $ref = DateTime->from_epoch(epoch => int(rand($now)),
        time_zone => 'Asia/Tokyo');

    # the results should be the same regardless of time zone
    for my $tz qw(US/Pacific UTC) {
        my $dt = $ref->clone;
        $dt->set_time_zone($tz);

        # For our purposes, truncate the moment to 6 fractional digits
        my $moment = sprintf("%0.6f", moment($dt));

        ok($moment, "Moment from DT: $dt -> $moment");

        my $dt_from_moment = dt_from_moment($moment);
        isa_ok($dt_from_moment, 'DateTime', "DT from moment: $moment -> $dt");

        # XXX - as of 0.05, I have a discrepancy of 1 second
        # for now I'll ignore it
        my $diff = abs($dt->epoch - $dt_from_moment->epoch);
        ok($diff <= 1, "DT diff -> $diff, expected diff <= 1");
    }
}