File: construct.t

package info (click to toggle)
libdatetime-timezone-tzfile-perl 0.011-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, sid, trixie
  • size: 188 kB
  • sloc: perl: 320; makefile: 2
file content (113 lines) | stat: -r--r--r-- 2,932 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
use warnings;
use strict;

use IO::File 1.13;
use Test::More tests => 36;

require_ok "DateTime::TimeZone::Tzfile";

my $tz;

sub new_fh() {
	my $fh;
	($fh = IO::File->new("t/London.tz")) && $fh->binmode or die $!;
	return $fh;
}

$tz = DateTime::TimeZone::Tzfile->new("t/London.tz");
ok $tz;
is $tz->name, "t/London.tz";

$tz = DateTime::TimeZone::Tzfile->new(filename => "t/London.tz");
ok $tz;
is $tz->name, "t/London.tz";

$tz = DateTime::TimeZone::Tzfile->new(filename => "t/London.tz",
	name => "foobar");
ok $tz;
is $tz->name, "foobar";

$tz = DateTime::TimeZone::Tzfile->new(name => "foobar",
	filename => "t/London.tz");
ok $tz;
is $tz->name, "foobar";

my $fh = new_fh();
$tz = DateTime::TimeZone::Tzfile->new(name => "foobar", filehandle => $fh);
ok $tz;
is $tz->name, "foobar";
ok $fh->eof;

$fh = new_fh();
{ local $/ = \1; defined $fh->getline or die "read error: $!"; }
eval { DateTime::TimeZone::Tzfile->new(name => "foobar", filehandle => $fh); };
like $@, qr/\Abad tzfile: wrong magic number\b/;

eval { DateTime::TimeZone::Tzfile->new(); };
like $@, qr/\Afile not specified\b/;

eval { DateTime::TimeZone::Tzfile->new(name => "foobar"); };
like $@, qr/\Afile not specified\b/;

eval { DateTime::TimeZone::Tzfile->new(quux => "foobar"); };
like $@, qr/\Aunrecognised attribute\b/;

eval { DateTime::TimeZone::Tzfile->new(name => "foobar", name => "quux"); };
like $@, qr/\Atimezone name specified redundantly\b/;

eval {
	DateTime::TimeZone::Tzfile->new(category => "foobar",
		category => "quux");
};
like $@, qr/\Acategory value specified redundantly\b/;

eval { DateTime::TimeZone::Tzfile->new(is_olson => 1, is_olson => 1); };
like $@, qr/\Ais_olson flag specified redundantly\b/;

eval { DateTime::TimeZone::Tzfile->new(filehandle => new_fh()); };
like $@, qr/\Atimezone name not specified\b/;

eval {
	DateTime::TimeZone::Tzfile->new(filename => "t/London.tz",
		filename => "t/London.tz");
};
like $@, qr/\Afilename specified redundantly\b/;

eval {
	DateTime::TimeZone::Tzfile->new(filehandle => new_fh(),
		filename => "t/London.tz");
};
like $@, qr/\Afilename specified redundantly\b/;

eval {
	DateTime::TimeZone::Tzfile->new(filename => "t/London.tz",
		filehandle => new_fh());
};
like $@, qr/\Afilehandle specified redundantly\b/;

eval {
	DateTime::TimeZone::Tzfile->new(filehandle => new_fh(),
		filehandle => new_fh());
};
like $@, qr/\Afilehandle specified redundantly\b/;

foreach(
	undef,
	[],
	*STDOUT,
	bless({}),
) {
	eval { DateTime::TimeZone::Tzfile->new(name => $_) };
	like $@, qr/\Atimezone name must be a string\b/;
	if(defined $_) {
		eval { DateTime::TimeZone::Tzfile->new(category => $_) };
		like $@, qr/\Acategory value must be a string or undef\b/;
	}
	eval { DateTime::TimeZone::Tzfile->new(filename => $_) };
	like $@, qr/\Afilename must be a string\b/;
}

eval { DateTime::TimeZone::Tzfile->new(filename => "t/notexist.tz"); };
like $@, qr#\Acan't read t/notexist\.tz: #;

1;