1#!perl -w 2 3# t/008_epoch.t - Epoch (%s) tests 4 5use Test::More 0.88; 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# is UTC recognized? 21test( 22 pattern => "%a %d %b %Y %H:%M:%S %p %Z", 23 time_zone => 'UTC', 24 locale => 'en_US', 25 input => "Thu 08 Jul 2010 09:49:02 AM UTC", 26 epoch => 1278582542, 27); 28 29# diag("Epoch with a no given time_zone assumes 'floating'. (Though when given an epoch, really should assume UTC ..)"); 30{ 31 my $parser = DateTime::Format::Strptime->new( 32 pattern => '%s', 33 locale => 'en', 34 on_error => 'undef', 35 ); 36 isa_ok( $parser, 'DateTime::Format::Strptime' ); 37 my $parsed = $parser->parse_datetime('1235282552'); 38 isa_ok( $parsed, 'DateTime' ); 39 is( $parsed->year, 2009 ); 40 is( $parsed->month, 2 ); 41 is( $parsed->day, 22 ); 42 is( $parsed->hour, 6 ); 43 is( $parsed->minute, 2 ); 44 is( $parsed->second, 32 ); 45 is( $parsed->nanosecond * 1, 0 ); 46 is( $parsed->time_zone->name, 'floating' ); 47} 48 49# diag("Epoch with a time_zone should return the correct time for that TZ when the epoch occurs in UTC"); 50{ 51 my $parser = DateTime::Format::Strptime->new( 52 pattern => '%s', 53 locale => 'en', 54 on_error => 'undef', 55 time_zone => 'Asia/Manila', 56 ); 57 isa_ok( $parser, 'DateTime::Format::Strptime' ); 58 my $parsed = $parser->parse_datetime('1235282552'); 59 isa_ok( $parsed, 'DateTime' ); 60 is( $parsed->year, 2009 ); 61 is( $parsed->month, 2 ); 62 is( $parsed->day, 22 ); 63 is( $parsed->hour, 14 ); 64 is( $parsed->minute, 2 ); 65 is( $parsed->second, 32 ); 66 is( $parsed->nanosecond * 1, 0 ); 67 is( $parsed->time_zone->name, 'Asia/Manila' ); 68} 69 70sub test { 71 my %arg = @_; 72 73 my $strptime = DateTime::Format::Strptime->new( 74 pattern => $arg{pattern} || '%F %T', 75 locale => $arg{locale} || 'en', 76 time_zone => $arg{time_zone} || 'UTC', 77 diagnostic => $arg{diagnostic} || 0, 78 on_error => 'undef', 79 ); 80 isa_ok( $strptime, 'DateTime::Format::Strptime' ); 81 82 my $parsed = $strptime->parse_datetime( $arg{input} ); 83 isa_ok( $parsed, 'DateTime' ); 84 85 is( $parsed->epoch, $arg{epoch} ); 86} 87 88done_testing(); 89