#!/usr/bin/perl -w
use strict;
use Test::More tests => 31;
BEGIN
{
use_ok('Time::Clock');
}
my $t = Time::Clock->new;
is(ref($t), 'Time::Clock', 'new()');
$t = Time::Clock->new(hour => 12, minute => 34, second => 56);
is($t->as_string, '12:34:56', 'as_string 1');
is("$t", '12:34:56', 'as_string 2');
is($t->as_integer_seconds, 45296, 'as_integer_seconds 1');
is(Time::Clock->new('00:00:01.12345')->as_integer_seconds, 1, 'as_integer_seconds 2');
$t->nanosecond(123000000);
is("$t", '12:34:56.123', 'as string 3');
$t = Time::Clock->new('01:02:03');
is($t->as_string, '01:02:03', 'as_string 4');
# Hour
is($t->hour(0), 0, 'hour 0');
is($t->hour(23), 23, 'hour 23');
eval { $t->hour(-1) };
ok($@, 'hour -1');
eval { $t->hour(24) };
ok($@, 'hour 24');
# Minute
is($t->minute(0), 0, 'minute 0');
is($t->minute(59), 59, 'minute 59');
eval { $t->minute(-1) };
ok($@, 'minute -1');
eval { $t->minute(60) };
ok($@, 'minute 60');
# Second
is($t->second(0), 0, 'second 0');
is($t->second(59), 59, 'second 59');
eval { $t->second(-1) };
ok($@, 'second -1');
eval { $t->second(60) };
ok($@, 'second 60');
# Nanosecond
is($t->nanosecond(0), 0, 'nanosecond 0');
is($t->nanosecond(999_999_999), 999_999_999, 'nanosecond 999,999,999');
eval { $t->nanosecond(-1) };
ok($@, 'nanosecond -1');
eval { $t->nanosecond(1_000_000_000) };
ok($@, 'nanosecond 1,000,000,000');
# AM/PM
$t->hour(0);
is($t->ampm, 'AM', 'am 1');
$t->hour(11);
is($t->ampm, 'AM', 'am 2');
$t->hour(12);
is($t->ampm, 'PM', 'pm 1');
$t->hour(23);
is($t->ampm, 'PM', 'pm 2');
$t->hour(1);
$t->ampm('pm');
is($t->hour, 13, 'to pm 1');
eval { $t->ampm('am') };
ok($@, 'to am 1');
$t->hour(12);
$t->ampm('am');
is($t->hour, 0, 'to am 2');