|
Packit |
106d3f |
#!/usr/bin/perl
|
|
Packit |
106d3f |
|
|
Packit |
106d3f |
# Copyright (C) 2003-2012 Joshua Hoblitt
|
|
Packit |
106d3f |
|
|
Packit |
106d3f |
use strict;
|
|
Packit |
106d3f |
use warnings;
|
|
Packit |
106d3f |
|
|
Packit |
106d3f |
use lib qw( ./lib );
|
|
Packit |
106d3f |
|
|
Packit |
106d3f |
use Test::More tests => 4;
|
|
Packit |
106d3f |
|
|
Packit |
106d3f |
use DateTime::Format::ISO8601;
|
|
Packit |
106d3f |
|
|
Packit |
106d3f |
# parse_datetime
|
|
Packit |
106d3f |
my $base_year = 2000;
|
|
Packit |
106d3f |
my $base_month = "01";
|
|
Packit |
106d3f |
my $iso8601 = DateTime::Format::ISO8601->new(
|
|
Packit |
106d3f |
base_datetime => DateTime->new( year => $base_year, month => $base_month ),
|
|
Packit |
106d3f |
);
|
|
Packit |
106d3f |
|
|
Packit |
106d3f |
# examples from https://rt.cpan.org/Ticket/Update.html?id=5264
|
|
Packit |
106d3f |
|
|
Packit |
106d3f |
#Section 4.2.5.1 says "Expressions of the difference between local time and UTC
|
|
Packit |
106d3f |
#of day are a component in the representations defined in 4.2.5.2; they shall
|
|
Packit |
106d3f |
#not be used as self-standing expressions.". Which means the UTC offset is
|
|
Packit |
106d3f |
#considered part of the time format so you get to use the extended formation
|
|
Packit |
106d3f |
#(the ':') or not but you can't mix and match the two.
|
|
Packit |
106d3f |
|
|
Packit |
106d3f |
eval {
|
|
Packit |
106d3f |
my $dt = $iso8601->parse_datetime( '2009-12-10T09:00:00.00+0100' );
|
|
Packit |
106d3f |
};
|
|
Packit |
106d3f |
like( $@, qr/Invalid date format/ );
|
|
Packit |
106d3f |
|
|
Packit |
106d3f |
eval {
|
|
Packit |
106d3f |
my $dt = $iso8601->parse_datetime( '2011-07-04T20:50:23+0200' );
|
|
Packit |
106d3f |
};
|
|
Packit |
106d3f |
like( $@, qr/Invalid date format/ );
|
|
Packit |
106d3f |
|
|
Packit |
106d3f |
# more "colon or not" coverage
|
|
Packit |
106d3f |
eval {
|
|
Packit |
106d3f |
my $dt = $iso8601->parse_datetime( '20091210T090000.00+01:00' );
|
|
Packit |
106d3f |
};
|
|
Packit |
106d3f |
like( $@, qr/Invalid date format/ );
|
|
Packit |
106d3f |
|
|
Packit |
106d3f |
eval {
|
|
Packit |
106d3f |
my $dt = $iso8601->parse_datetime( '20110704T205023+02:00' );
|
|
Packit |
106d3f |
};
|
|
Packit |
106d3f |
like( $@, qr/Invalid date format/ );
|