1#!perl -w 2 3# t/004_locale_defaults.t - check module dates in various formats 4 5use Test::More 0.88; 6use DateTime::Format::Strptime; 7use DateTime; 8use DateTime::TimeZone; 9use DateTime::Locale; 10 11my $object = DateTime::Format::Strptime->new( 12 pattern => '%c', 13 diagnostic => 0, 14 on_error => sub { warn @_ }, 15); 16 17my @tests = ( 18 19 # Australian English 20 [ 'en_AU', '%x', '31/12/98' ], 21 [ 'en_AU', '%X', '13:34:56' ], 22 [ 'en_AU', '%c', 'Thu 31 Dec 1998 13:34:56 AEDT' ], 23 24 # US English 25 [ 'en_US', '%x', '12/31/1998' ], 26 [ 'en_US', '%X', '01:34:56 PM' ], 27 [ 'en_US', '%c', 'Thu 31 Dec 1998 01:34:56 PM MST' ], 28 29 # UK English 30 [ 'en_GB', '%x', '31/12/98' ], 31 [ 'en_GB', '%X', '13:34:56' ], 32 [ 'en_GB', '%c', 'Thu 31 Dec 1998 13:34:56 GMT' ], 33 34 # French French 35 [ 'fr_FR', '%x', '31/12/1998' ], 36 [ 'fr_FR', '%X', '13:34:56' ], 37 [ 'fr_FR', '%c', 'jeu. 31 D�c 1998 13:34:56 CEST' ], 38 39 # French Generic - inherits from root locale for glibc formats 40 [ 'fr', '%x', '12/31/98' ], 41 [ 'fr', '%X', '13:34:56' ], 42 [ 'fr', '%c', 'jeu. D�c 31 13:34:56 1998' ], 43); 44 45foreach (@tests) { 46 my ( $locale, $pattern, $data ) = @$_; 47 $object->locale($locale); 48 $object->pattern($pattern); 49 my $datetime = $object->parse_datetime($data); 50 51 unless ($datetime) { 52 fail("Could not parse $data with $pattern for $locale") for 1..3; 53 next; 54 } 55 56 if ( $pattern eq '%x' or $pattern eq '%c' ) { 57 is( $datetime->year, 1998, $locale . ' : ' . $pattern . ' : year' ); 58 is( $datetime->month, 12, $locale . ' : ' . $pattern . ' : month' ); 59 is( $datetime->day, 31, $locale . ' : ' . $pattern . ' : day' ); 60 } 61 if ( $pattern eq '%X' or $pattern eq '%c' ) { 62 is( $datetime->hour, 13, $locale . ' : ' . $pattern . ' : hour' ); 63 is( $datetime->minute, 34, $locale . ' : ' . $pattern . ' : minute' ); 64 is( $datetime->second, 56, $locale . ' : ' . $pattern . ' : second' ); 65 } 66} 67 68done_testing(); 69