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 0.869 second using v1.01-cache-2.11-cpan-9789f410c06 )