refactor: FontNameRules::check() ohne toten Reserviert-Zweig; Kollision bleibt taken()/409

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Jan-Niclas Loosen
2026-10-19 18:28:23 +02:00
co-authored by Claude Sonnet 5.5
parent bfe6623fe8
commit 15cffedb9f
4 changed files with 29 additions and 30 deletions
@@ -13,40 +13,40 @@ final class FontNameRulesTest extends TestCase
public function testLettersDigitsSpacesUnderscoresAndHyphensAreAllowed(): void
{
self::assertNull(FontNameRules::check('Inter Display_2-Bold', self::RESERVED));
self::assertNull(FontNameRules::check('X', self::RESERVED));
self::assertNull(FontNameRules::check('Inter Display_2-Bold'));
self::assertNull(FontNameRules::check('X'));
}
public function testOtherCharactersAreRefusedWithTheNameDiviWouldStore(): void
{
$problem = (string) FontNameRules::check('Grotesk (Pro)!', self::RESERVED);
$problem = (string) FontNameRules::check('Grotesk (Pro)!');
self::assertStringContainsString('nur Buchstaben', $problem);
self::assertStringContainsString('„Grotesk Pro“', $problem);
self::assertStringContainsString('„Mller“', (string) FontNameRules::check('Müller', self::RESERVED));
self::assertStringContainsString('nur Buchstaben', (string) FontNameRules::check('a.b', self::RESERVED));
self::assertStringContainsString('nur Buchstaben', (string) FontNameRules::check("Tab\tName", self::RESERVED));
self::assertStringContainsString('nichts übrig', (string) FontNameRules::check('«»', self::RESERVED));
self::assertStringContainsString('„Mller“', (string) FontNameRules::check('Müller'));
self::assertStringContainsString('nur Buchstaben', (string) FontNameRules::check('a.b'));
self::assertStringContainsString('nur Buchstaben', (string) FontNameRules::check("Tab\tName"));
self::assertStringContainsString('nichts übrig', (string) FontNameRules::check('«»'));
}
public function testEmptyAndPaddedNamesAreRefused(): void
{
self::assertStringContainsString('1–100 Zeichen', (string) FontNameRules::check('', self::RESERVED));
self::assertStringContainsString('1–100 Zeichen', (string) FontNameRules::check(' ', self::RESERVED));
self::assertStringContainsString('Anfang oder Ende', (string) FontNameRules::check(' Inter', self::RESERVED));
self::assertStringContainsString('Anfang oder Ende', (string) FontNameRules::check('Inter ', self::RESERVED));
self::assertStringContainsString('1–100 Zeichen', (string) FontNameRules::check(''));
self::assertStringContainsString('1–100 Zeichen', (string) FontNameRules::check(' '));
self::assertStringContainsString('Anfang oder Ende', (string) FontNameRules::check(' Inter'));
self::assertStringContainsString('Anfang oder Ende', (string) FontNameRules::check('Inter '));
}
public function testTheLengthLimitIsOneHundredCharactersOrDivisBound(): void
{
self::assertNull(FontNameRules::check(str_repeat('a', 100), self::RESERVED));
self::assertNull(FontNameRules::check(str_repeat('a', 100)));
self::assertStringContainsString(
'höchstens 100 Zeichen (101 angegeben)',
(string) FontNameRules::check(str_repeat('a', 101), self::RESERVED)
(string) FontNameRules::check(str_repeat('a', 101))
);
self::assertStringContainsString(
'höchstens 50 Zeichen',
(string) FontNameRules::check(str_repeat('a', 51), self::RESERVED, 50)
(string) FontNameRules::check(str_repeat('a', 51), 50)
);
}
@@ -57,8 +57,6 @@ final class FontNameRulesTest extends TestCase
self::assertSame('Hausschrift', FontNameRules::taken('Hausschrift', self::RESERVED));
self::assertNull(FontNameRules::taken('Open Sans Pro', self::RESERVED));
self::assertNull(FontNameRules::taken('Roboto', []));
$problem = (string) FontNameRules::check('times new roman', self::RESERVED);
self::assertStringContainsString('„Times New Roman“ gibt es schon', $problem);
self::assertNull(FontNameRules::check('times new roman'), 'the form is fine; the collision is taken()');
}
}