* SPDX-License-Identifier: MIT */ declare(strict_types=1); namespace Respect\Validation\Rules; use DateTime; use DateTimeImmutable; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\Group; use Respect\Validation\Test\RuleTestCase; use Respect\Validation\Test\Stubs\CountableStub; #[Group('rule')] #[CoversClass(AbstractComparison::class)] #[CoversClass(Min::class)] final class MinTest extends RuleTestCase { /** @return iterable */ public static function providerForValidInput(): iterable { return [ // From documentation [new Min(10), 10], [new Min(10), 11], [new Min('2010-01-01'), '2010-01-01'], [new Min(new DateTime('yesterday')), new DateTimeImmutable('tomorrow')], [new Min('1988-09-09'), '18 years ago'], [new Min('a'), 'b'], [new Min(100), 165.0], [new Min(-100), 200], [new Min(200), 200], [new Min(200), 300], [new Min('a'), 'a'], [new Min('a'), 'c'], [new Min('yesterday'), 'now'], // Samples from issue #178 [new Min('13-05-2014 03:16'), '20-05-2014 03:16'], [new Min(new DateTime('13-05-2014 03:16')), new DateTime('20-05-2014 03:16')], [new Min('13-05-2014 03:16'), new DateTime('20-05-2014 03:16')], [new Min(new DateTime('13-05-2014 03:16')), '20-05-2014 03:16'], [new Min(50), 50], [new Min(new CountableStub(10)), 10], ]; } /** @return iterable */ public static function providerForInvalidInput(): iterable { return [ // From documentation [new Min(10), 9], [new Min('2011-01-01'), '2009-01-01'], [new Min(new DateTimeImmutable('+1 month')), new DateTime('today')], [new Min('+1 minute'), new DateTime('now')], [new Min('C'), 'A'], [new Min(100), ''], [new Min(100), ''], [new Min(500), 300], [new Min(0), -250], [new Min(0), -50], [new Min(new CountableStub(1)), 0], [new Min(2040), '2018-01-25'], [new Min(10.5), '2018-01-25'], ]; } }