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