use strict;
use warnings;
-BEGIN {
+use Test::More;
- use Test::More tests => 30;
- use Test::Exception;
- use DateTime;
-
- use_ok 'MooseX::Types::DateTimeX';
+BEGIN {
+ plan skip_all => "DateTime::Format::DateManip required" unless eval { require DateTime::Format::DateManip };
+ plan tests => 30;
}
+use Test::Exception;
+use DateTime;
+
+use ok 'MooseX::Types::DateTimeX';
+
=head1 NAME
t/02_datetimex.t - Check that we can properly coerce a string.
=cut
-ok $class->date('2/13/1969 noon')
-=> "coerced a DateTime from '2/13/1969 noon'";
-
-is $class->date, '1969-02-13T12:00:00'
-=> 'got correct date';
+sub coerce_ok ($;$) {
+ my ( $date, $canon ) = @_;
-ok $class->date('2/13/1969')
-=> "coerced a DateTime from '2/13/1969'";
+ SKIP: {
+ skip "DateTimeX::Easy couldn't parse '$date'", $canon ? 2 : 1 unless DateTimeX::Easy->new($date);
+ ok( $class->date($date), "coerced a DateTime from '$date'" );
+ is( $class->date, $canon, 'got correct date' ) if $canon;
+ }
+}
- is $class->date, '1969-02-13T00:00:00'
- => 'got correct date';
+coerce_ok ('2/13/1969 noon', '1969-02-13T12:00:00' );
-ok $class->date('2/13/1969 America/New_York')
-=> "coerced a DateTime from '2/13/1969 America/New_York'";
- isa_ok $class->date->time_zone => 'DateTime::TimeZone::America::New_York'
- => 'Got Correct America/New_York TimeZone';
+coerce_ok( '2/13/1969', '1969-02-13T00:00:00' );
- is $class->date, '1969-02-13T00:00:00'
- => 'got correct date';
+coerce_ok( '2/13/1969 America/New_York', '1969-02-13T00:00:00' );
-ok $class->date('jan 1 2006')
-=>"coerced a DateTime from 'jan 1 2006'";
+SKIP: {
+ skip "couldn't parse", 1 unless $class->date;
+ isa_ok $class->date->time_zone => 'DateTime::TimeZone::America::New_York'
+ => 'Got Correct America/New_York TimeZone';
+}
- is $class->date, '2006-01-01T00:00:00'
- => 'got correct date';
-
+coerce_ok( 'jan 1 2006', '2006-01-01T00:00:00' );
=head2 relative dates
=cut
-ok $class->date('now')
-=> "coerced a DateTime from 'now'";
-
-ok $class->date('yesterday')
-=> "coerced a DateTime from 'yesterday'";
-
-
-ok $class->date('tomorrow')
-=> "coerced a DateTime from 'tomorrow'";
+coerce_ok("now");
+coerce_ok("yesterday");
-ok $class->date('last week')
-=> "coerced a DateTime from 'last week'";
+coerce_ok("tomorrow");
+coerce_ok("last week");
=head2 check inherited constraints