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

use Test::More 'tests' => 23;

	BEGIN { use_ok('Time::Vector') };

	my $wt = new Time::Vector;

	ok(defined $wt,				'new returned a object');
	ok($wt->isa('Time::Vector'),		' and class is correct');
	ok(defined $wt->vec,			' and there\'s a vector');
	ok($wt->vec->isa('Bit::Vector'),	' a Bit::Vector!');
	is($wt->vec->Size, 1440,		' correctly sized');

	ok(!defined $wt->first,			' first is not defined');
	ok(!defined $wt->last,			' neither is last');

	$wt = Time::Vector->new_range('08:30', '12:30', '14:00', '18:00');	
	
	ok(defined $wt,				'new_range returned a object');
	ok($wt->isa('Time::Vector'),		' and class is correct');
	ok(defined $wt->vec,			' and there\'s a vector');
	ok($wt->vec->isa('Bit::Vector'),	' a Bit::Vector!');

	ok(defined $wt->first,			' first is defined');
	ok(defined $wt->last,			' and last too');

	ok(defined $wt->after,			'after range is ok');
	ok(defined $wt->before,			'before too');

	is("$wt", "08:30-12:30,14:00-18:00",	'stringification is ok');

#	my @expected = ('08:30-12:30', '14:00-18:00');
#	is_deeply([ map { "$_" } $wt->range], \@expected,	'range is ok');

	my $wc = $wt->clone;
	ok(defined $wc,				'we can be cloned');
	is($wt->vec, $wc->vec,			' and our DNA is not malformed');

	ok($wt->duration,			'we have a duration');
	is($wt->duration, 60 * 60 * 8,		' w/ correct number of seconds');

	# XXX verify after and before

	my $w1 = Time::Vector->new_range('08:30', '12:30');
	my $w2 = Time::Vector->new_range('14:00', '18:00');

	is(($w1 | $w2)->vec, $wt->vec,		'the or operator works nicely');
	is(($wt & $w1)->vec, $w1->vec,		'the and operator too');