Blame t/construct.t

Packit 1c5982
use warnings;
Packit 1c5982
use strict;
Packit 1c5982
Packit 1c5982
use IO::File 1.13;
Packit 1c5982
use Test::More tests => 36;
Packit 1c5982
Packit 1c5982
require_ok "DateTime::TimeZone::Tzfile";
Packit 1c5982
Packit 1c5982
my $tz;
Packit 1c5982
Packit 1c5982
sub new_fh() {
Packit 1c5982
	my $fh;
Packit 1c5982
	($fh = IO::File->new("t/London.tz")) && $fh->binmode or die $!;
Packit 1c5982
	return $fh;
Packit 1c5982
}
Packit 1c5982
Packit 1c5982
$tz = DateTime::TimeZone::Tzfile->new("t/London.tz");
Packit 1c5982
ok $tz;
Packit 1c5982
is $tz->name, "t/London.tz";
Packit 1c5982
Packit 1c5982
$tz = DateTime::TimeZone::Tzfile->new(filename => "t/London.tz");
Packit 1c5982
ok $tz;
Packit 1c5982
is $tz->name, "t/London.tz";
Packit 1c5982
Packit 1c5982
$tz = DateTime::TimeZone::Tzfile->new(filename => "t/London.tz",
Packit 1c5982
	name => "foobar");
Packit 1c5982
ok $tz;
Packit 1c5982
is $tz->name, "foobar";
Packit 1c5982
Packit 1c5982
$tz = DateTime::TimeZone::Tzfile->new(name => "foobar",
Packit 1c5982
	filename => "t/London.tz");
Packit 1c5982
ok $tz;
Packit 1c5982
is $tz->name, "foobar";
Packit 1c5982
Packit 1c5982
my $fh = new_fh();
Packit 1c5982
$tz = DateTime::TimeZone::Tzfile->new(name => "foobar", filehandle => $fh);
Packit 1c5982
ok $tz;
Packit 1c5982
is $tz->name, "foobar";
Packit 1c5982
ok $fh->eof;
Packit 1c5982
Packit 1c5982
$fh = new_fh();
Packit 1c5982
{ local $/ = \1; defined $fh->getline or die "read error: $!"; }
Packit 1c5982
eval { DateTime::TimeZone::Tzfile->new(name => "foobar", filehandle => $fh); };
Packit 1c5982
like $@, qr/\Abad tzfile: wrong magic number\b/;
Packit 1c5982
Packit 1c5982
eval { DateTime::TimeZone::Tzfile->new(); };
Packit 1c5982
like $@, qr/\Afile not specified\b/;
Packit 1c5982
Packit 1c5982
eval { DateTime::TimeZone::Tzfile->new(name => "foobar"); };
Packit 1c5982
like $@, qr/\Afile not specified\b/;
Packit 1c5982
Packit 1c5982
eval { DateTime::TimeZone::Tzfile->new(quux => "foobar"); };
Packit 1c5982
like $@, qr/\Aunrecognised attribute\b/;
Packit 1c5982
Packit 1c5982
eval { DateTime::TimeZone::Tzfile->new(name => "foobar", name => "quux"); };
Packit 1c5982
like $@, qr/\Atimezone name specified redundantly\b/;
Packit 1c5982
Packit 1c5982
eval {
Packit 1c5982
	DateTime::TimeZone::Tzfile->new(category => "foobar",
Packit 1c5982
		category => "quux");
Packit 1c5982
};
Packit 1c5982
like $@, qr/\Acategory value specified redundantly\b/;
Packit 1c5982
Packit 1c5982
eval { DateTime::TimeZone::Tzfile->new(is_olson => 1, is_olson => 1); };
Packit 1c5982
like $@, qr/\Ais_olson flag specified redundantly\b/;
Packit 1c5982
Packit 1c5982
eval { DateTime::TimeZone::Tzfile->new(filehandle => new_fh()); };
Packit 1c5982
like $@, qr/\Atimezone name not specified\b/;
Packit 1c5982
Packit 1c5982
eval {
Packit 1c5982
	DateTime::TimeZone::Tzfile->new(filename => "t/London.tz",
Packit 1c5982
		filename => "t/London.tz");
Packit 1c5982
};
Packit 1c5982
like $@, qr/\Afilename specified redundantly\b/;
Packit 1c5982
Packit 1c5982
eval {
Packit 1c5982
	DateTime::TimeZone::Tzfile->new(filehandle => new_fh(),
Packit 1c5982
		filename => "t/London.tz");
Packit 1c5982
};
Packit 1c5982
like $@, qr/\Afilename specified redundantly\b/;
Packit 1c5982
Packit 1c5982
eval {
Packit 1c5982
	DateTime::TimeZone::Tzfile->new(filename => "t/London.tz",
Packit 1c5982
		filehandle => new_fh());
Packit 1c5982
};
Packit 1c5982
like $@, qr/\Afilehandle specified redundantly\b/;
Packit 1c5982
Packit 1c5982
eval {
Packit 1c5982
	DateTime::TimeZone::Tzfile->new(filehandle => new_fh(),
Packit 1c5982
		filehandle => new_fh());
Packit 1c5982
};
Packit 1c5982
like $@, qr/\Afilehandle specified redundantly\b/;
Packit 1c5982
Packit 1c5982
foreach(
Packit 1c5982
	undef,
Packit 1c5982
	[],
Packit 1c5982
	*STDOUT,
Packit 1c5982
	bless({}),
Packit 1c5982
) {
Packit 1c5982
	eval { DateTime::TimeZone::Tzfile->new(name => $_) };
Packit 1c5982
	like $@, qr/\Atimezone name must be a string\b/;
Packit 1c5982
	if(defined $_) {
Packit 1c5982
		eval { DateTime::TimeZone::Tzfile->new(category => $_) };
Packit 1c5982
		like $@, qr/\Acategory value must be a string or undef\b/;
Packit 1c5982
	}
Packit 1c5982
	eval { DateTime::TimeZone::Tzfile->new(filename => $_) };
Packit 1c5982
	like $@, qr/\Afilename must be a string\b/;
Packit 1c5982
}
Packit 1c5982
Packit 1c5982
eval { DateTime::TimeZone::Tzfile->new(filename => "t/notexist.tz"); };
Packit 1c5982
like $@, qr#\Acan't read t/notexist\.tz: #;
Packit 1c5982
Packit 1c5982
1;