DateTime-Format-Genealogy
view release on metacpan or search on metacpan
t/edge_cases.t view on Meta::CPAN
'from 1 Jan 2000 to 31 Dec 2000',
'1 Jan 2000 - 31 Dec 2000',
);
for my $range (@RANGE_STRINGS) {
my $scalar = $obj->parse_datetime($range);
ok(!defined $scalar, "'$range' in scalar context returns undef");
}
};
subtest 'parse_datetime - range with invalid first endpoint' => sub {
# When one endpoint of a bet...and... range is itself invalid (31 Nov),
# the recursive parse_datetime call returns the empty list. In list
# context that causes the outer return to have fewer than 2 elements.
# This is a known limitation: callers must check scalar(@result) == 2.
my $obj = $PKG->new(quiet => 1);
my @range;
lives_ok(
sub { @range = $obj->parse_datetime('bet 31 Nov 2000 and 31 Dec 2000') },
'bet range with invalid first endpoint does not crash',
);
# Verify the caller gets back something that is at least not a full 2-DT list.
ok(scalar(@range) != 2 || !defined $range[0],
'invalid first endpoint: result is not a clean 2-element range');
diag("Range with bad first endpoint: " . scalar(@range) . " elements")
if $ENV{TEST_VERBOSE};
};
subtest 'parse_datetime - deeply nested bet...and... does not crash' => sub {
# "bet bet A and B and C" is nonsensical but must not crash or loop forever.
my $obj = $PKG->new(quiet => 1);
my @result;
lives_ok(
sub { @result = $obj->parse_datetime('bet bet 1 Jan 2000 and 31 Dec 2000 and 1 Jan 2001') },
( run in 2.304 seconds using v1.01-cache-2.11-cpan-9789f410c06 )