assertSame(1, preg_match(self::YEAR_PATTERN, '2020')); $this->assertSame(1, preg_match(self::YEAR_PATTERN, '1999')); $this->assertSame(1, preg_match(self::YEAR_PATTERN, '1900')); $this->assertSame(1, preg_match(self::YEAR_PATTERN, '2099')); } public function test_year_validation_rejects_invalid_years(): void { $this->assertSame(0, preg_match(self::YEAR_PATTERN, 'invalid')); $this->assertSame(0, preg_match(self::YEAR_PATTERN, '1899')); $this->assertSame(0, preg_match(self::YEAR_PATTERN, '2100')); $this->assertSame(0, preg_match(self::YEAR_PATTERN, '20')); $this->assertSame(0, preg_match(self::YEAR_PATTERN, '20200')); } public function test_year_filter_uses_equality_not_like(): void { $validYear = '2020'; $expectedFragment = ' AND m.year = '; $this->assertStringContainsString('m.year = ', $expectedFragment.$validYear); $this->assertStringNotContainsString('LIKE', $expectedFragment.$validYear); } }