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 => 15;
use DateTime;

use t::lib::helper;

use DateTime::Format::Flexible;

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

{
    my $dt = DateTime::Format::Flexible->parse_datetime(
        '12/10/54' , lang => ['es'], european => 1,
    );
    is( $dt->datetime , '2054-10-12T00:00:00' , '12/10/54 => 2054-10-12T00:00:00' );
}

{
    my $dt = DateTime::Format::Flexible->parse_datetime(
        '29.2.96' , lang => ['es'], european => 1,
    );
    is( $dt->datetime , '1996-02-29T00:00:00' , '29.2.96 => 1996-02-29T00:00:00' );
}

t::lib::helper::run_tests(
    '29 de febrero de 1996 => 1996-02-29T00:00:00',
    'Mayo 24 2009 => 2009-05-24T00:00:00',
    'martes 12 de octubre de 1954 => 1954-10-12T00:00:00',
    '8 de abril 2000 => 2000-04-08T00:00:00',
    '30 de octubre de 1977 => 1977-10-30T00:00:00',
    '2 de enero de 2000 => 2000-01-02T00:00:00',
    "4 de julio => $curr_year-07-04T00:00:00",
    '25 de diciembre de 2000 => 2000-12-25T00:00:00',
    "3 de agosto => $curr_year-08-03T00:00:00",
    'epoca => 1970-01-01T00:00:00',
);

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

{
    my $dt = DateTime::Format::Flexible->parse_datetime( 'infinito' );
    ok ( $dt->is_infinite() , "infinito 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( 'Hace 3 años' );
    is( $dt->datetime, '2002-06-07T13:14:15', 'Hace 3 años => 3 years ago' );
}