1# $Id: format_datetime.t 3645 2007-03-23 03:01:42Z lestrrat $
2use Test::More tests => 11;
3use DateTime 0.10;
4use DateTime::TimeZone;
5use DateTime::Format::Pg 0.02;
6
7%tests = (
8  '2003-07-01 04:05:06+0200' => {
9    year      => 2003,
10    month     => 7,
11    day       => 1,
12    hour      => 4,
13    minute    => 5,
14    second    => 6,
15    time_zone => 'Europe/Berlin' },
16
17  '2003-01-01 04:05:06+0100' => {
18    year      => 2003,
19    month     => 1,
20    day       => 1,
21    hour      => 4,
22    minute    => 5,
23    second    => 6,
24    time_zone => 'Europe/Berlin' },
25
26  '2003-07-01 04:05:06' => {
27    year      => 2003,
28    month     => 7,
29    day       => 1,
30    hour      => 4,
31    minute    => 5,
32    second    => 6,
33    time_zone => 'floating' },
34
35  '2003-07-01 04:05:06+0000' => {
36    year      => 2003,
37    month     => 7,
38    day       => 1,
39    hour      => 4,
40    minute    => 5,
41    second    => 6,
42    time_zone => 'UTC' },
43
44  '1901-01-01 02:00:00+0100' => {
45    year      => 1901,
46    month     => 1,
47    day       => 1,
48    hour      => 2,
49    minute    => 0,
50    second    => 0,
51    time_zone => '+01:00' },
52
53  '0001-12-24 02:00:00+0100 BC' => {
54    year      => 0,
55    month     => 12,
56    day       => 24,
57    hour      => 2,
58    minute    => 0,
59    second    => 0,
60    time_zone => '+01:00' },
61
62  '0001-12-24 02:00:00.000001234+0100 BC' => {
63    year      => 0,
64    month     => 12,
65    day       => 24,
66    hour      => 2,
67    minute    => 0,
68    nanosecond=> 1234,
69    second    => 0,
70    time_zone => '+01:00' },
71
72);
73
74foreach my $result (keys %tests) {
75  my $dt = DateTime->new( %{$tests{$result}} );
76  is( DateTime::Format::Pg->format_datetime($dt), $result );
77}
78
79is(
80    DateTime::Format::Pg->format_datetime(DateTime::Infinite::Future->new),
81    'infinity'
82);
83
84is(
85    DateTime::Format::Pg->format_timestamp(DateTime::Infinite::Future->new),
86    'infinity'
87);
88
89is(
90    DateTime::Format::Pg->format_datetime(DateTime::Infinite::Past->new),
91    '-infinity'
92);
93
94is(
95    DateTime::Format::Pg->format_timestamp(DateTime::Infinite::Past->new),
96    '-infinity'
97);
98
99