Blob Blame History Raw
#!/usr/bin/perl

# Copyright (C) 2003-2012  Joshua Hoblitt

use strict;
use warnings;

use lib qw( ./lib );

use Test::More tests => 4;

use DateTime::Format::ISO8601;

# parse_datetime
my $base_year = 2000;
my $base_month = "01";
my $iso8601 = DateTime::Format::ISO8601->new(
    base_datetime => DateTime->new( year => $base_year, month => $base_month ),
);

# examples from https://rt.cpan.org/Ticket/Update.html?id=5264

#Section 4.2.5.1 says "Expressions of the difference between local time and UTC
#of day are a component in the representations defined in 4.2.5.2; they shall
#not be used as self-standing expressions.".  Which means the UTC offset is
#considered part of the time format so you get to use the extended formation
#(the ':') or not but you can't mix and match the two.

eval {
    my $dt = $iso8601->parse_datetime( '2009-12-10T09:00:00.00+0100' );
};
like( $@, qr/Invalid date format/ );

eval {
    my $dt = $iso8601->parse_datetime( '2011-07-04T20:50:23+0200' );
};
like( $@, qr/Invalid date format/ );

# more "colon or not" coverage
eval {
    my $dt = $iso8601->parse_datetime( '20091210T090000.00+01:00' );
};
like( $@, qr/Invalid date format/ );

eval {
    my $dt = $iso8601->parse_datetime( '20110704T205023+02:00' );
};
like( $@, qr/Invalid date format/ );