1#!perl -w 2 3# t/008_epoch.t - Epoch (%s) tests 4 5use Test::More tests => 23; 6use DateTime; 7use DateTime::Format::Strptime; 8 9my $time = time; 10 11# Epoch in, epoch out, now. 12test( 13 pattern => "%s", 14 time_zone => 'Asia/Manila', 15 locale => 'en_PH', 16 input => $time, 17 epoch => $time, 18); 19 20# diag("Epoch with a no given time_zone assumes 'floating'. (Though when given an epoch, really should assume UTC ..)"); 21{ 22 my $parser = DateTime::Format::Strptime->new( 23 pattern => '%s', 24 locale => 'en', 25 on_error => 'undef', 26 ); 27 isa_ok( $parser, 'DateTime::Format::Strptime' ); 28 my $parsed = $parser->parse_datetime('1235282552'); 29 isa_ok( $parsed, 'DateTime' ); 30 is( $parsed->year, 2009 ); 31 is( $parsed->month, 2 ); 32 is( $parsed->day, 22 ); 33 is( $parsed->hour, 6 ); 34 is( $parsed->minute, 2 ); 35 is( $parsed->second, 32 ); 36 is( $parsed->nanosecond * 1, 0 ); 37 is( $parsed->time_zone->name, 'floating' ); 38} 39 40# diag("Epoch with a time_zone should return the correct time for that TZ when the epoch occurs in UTC"); 41{ 42 my $parser = DateTime::Format::Strptime->new( 43 pattern => '%s', 44 locale => 'en', 45 on_error => 'undef', 46 time_zone => 'Asia/Manila', 47 ); 48 isa_ok( $parser, 'DateTime::Format::Strptime' ); 49 my $parsed = $parser->parse_datetime('1235282552'); 50 isa_ok( $parsed, 'DateTime' ); 51 is( $parsed->year, 2009 ); 52 is( $parsed->month, 2 ); 53 is( $parsed->day, 22 ); 54 is( $parsed->hour, 14 ); 55 is( $parsed->minute, 2 ); 56 is( $parsed->second, 32 ); 57 is( $parsed->nanosecond * 1, 0 ); 58 is( $parsed->time_zone->name, 'Asia/Manila' ); 59} 60 61sub test { 62 my %arg = @_; 63 64 my $strptime = DateTime::Format::Strptime->new( 65 pattern => $arg{pattern} || '%F %T', 66 locale => $arg{locale} || 'en', 67 time_zone => $arg{time_zone} || 'UTC', 68 diagnostic => $arg{diagnostic} || 0, 69 on_error => 'undef', 70 ); 71 isa_ok( $strptime, 'DateTime::Format::Strptime' ); 72 73 my $parsed = $strptime->parse_datetime( $arg{input} ); 74 isa_ok( $parsed, 'DateTime' ); 75 76 is( $parsed->epoch, $arg{epoch} ); 77} 78