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;
use Time::Duration::id;

use constant MINUTE =>   60;
use constant HOUR   => 3600;
use constant DAY    =>   24 * HOUR;
use constant YEAR   =>  365 * DAY;

# --------------------------------------------------------------------
# Basic tests..

my @basic_tests = (
    [ duration(    0), '0 detik' ],
    [ duration(    1), '1 detik' ],
    [ duration(   -1), '1 detik' ],
    [ duration( 3602), '1 jam 2 detik' ],
    [ duration(-3602), '1 jam 2 detik' ],

    [ later(   0), 'sekarang' ],
    [ later(   2), '2 detik lagi' ],
    [ later(  -2), '2 detik lalu' ],
    [ earlier( 0), 'sekarang' ],
    [ earlier( 2), '2 detik lalu' ],
    [ earlier(-2), '2 detik lagi' ],

    [ ago(      0), 'sekarang' ],
    [ ago(      2), '2 detik lalu' ],
    [ ago(     -2), '2 detik lagi' ],
    [ from_now( 0), 'sekarang' ],
    [ from_now( 2), '2 detik lagi' ],
    [ from_now(-2), '2 detik lalu' ],
);

# --------------------------------------------------------------------
# Some tests of concise() ...

my @concise_tests = (
    [ concise duration(   0), '0d' ],
    [ concise duration(   1), '1d' ],
    [ concise duration(  -1), '1d' ],
    [ concise duration(   2), '2d' ],
    [ concise duration(  -2), '2d' ],

    [ concise later(   0), 'sekarang' ],
    [ concise later(   2), '2d lagi' ],
    [ concise later(  -2), '2d lalu' ],
    [ concise earlier( 0), 'sekarang' ],
    [ concise earlier( 2), '2d lalu' ],
    [ concise earlier(-2), '2d lagi' ],

    [ concise ago(      0), 'sekarang' ],
    [ concise ago(      2), '2d lalu' ],
    [ concise ago(     -2), '2d lagi' ],
    [ concise from_now( 0), 'sekarang' ],
    [ concise from_now( 2), '2d lagi' ],
    [ concise from_now(-2), '2d lalu' ],
);

# --------------------------------------------------------------------
# execute the test

for my $case (@basic_tests) {
    is($case->[0], $case->[1], $case->[1]);
}

for my $case (@concise_tests) {
    is($case->[0], $case->[1], $case->[1]);
}

done_testing;