The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

use strict;
use warnings;

use Test::More tests => 18;
use DateTime;

use t::lib::helper;

use DateTime::Format::Flexible;

my $curr_year = DateTime->now->year;

# http://www.dummies.com/how-to/content/mastering-the-calendar-and-dates-in-german.html
# http://german.about.com/library/anfang/blanfang12b.htm
t::lib::helper::run_tests(
    [ european => 1 ],
    "20. Feb am Mittag => $curr_year-02-20T12:00:00",
    "20. Feb um Mitternacht => $curr_year-02-20T00:00:00",
    'Montag, 6. Dez 2010 => 2010-12-06T00:00:00',
    "am vierzehnten Juni => $curr_year-06-14T00:00:00",
    'am 14. Juni 2001 => 2001-06-14T00:00:00',
    '1. Januar 2000 => 2000-01-01T00:00:00',
    '10. Juni 1999 => 1999-06-10T00:00:00',
    '20. März 1888 => 1888-03-20T00:00:00',
    "am ersten Mai => $curr_year-05-01T00:00:00",
    'am 1. Mai 2001 => 2001-05-01T00:00:00',
    '14.7.01 => 2001-07-14T00:00:00',
    '1.5.01 => 2001-05-01T00:00:00',
);

{
    my $dt = DateTime::Format::Flexible->parse_datetime( '1. 1. 2000', european => 1 );
    is ( $dt->datetime, '2000-01-01T00:00:00', '1. 1. 2000 => 2000-01-01T00:00:00' );
}
{
    my $dt = DateTime::Format::Flexible->parse_datetime( '2. 4. 1999', european => 1 );
    is ( $dt->datetime, '1999-04-02T00:00:00', '2. 4. 1999 => 1999-04-02T00:00:00' );
}
{
    my $dt = DateTime::Format::Flexible->parse_datetime( '3. 5. 1617', european => 1 );
    is ( $dt->datetime, '1617-05-03T00:00:00', '3. 5. 1617 => 1617-05-03T00:00:00' );
}

{
    my $dt = DateTime::Format::Flexible->parse_datetime( '-unendlich' );
    ok ( $dt->is_infinite() , '-unendlich is infinite' );
}

{
    my $dt = DateTime::Format::Flexible->parse_datetime( 'unendlich' );
    ok ( $dt->is_infinite() , 'unendlich is infinite' );
}

{
    my ( $base_dt ) = DateTime::Format::Flexible->parse_datetime( '2005-06-07T13:14:15' );
    DateTime::Format::Flexible->base( $base_dt );
    my $dt = DateTime::Format::Flexible->parse_datetime( 'vor 3 Jahren' );
    is( $dt->datetime, '2002-06-07T13:14:15', 'vor 3 Jahren => 3 years ago' );

}