toStartWith('Bildschirmfoto') ->and($name)->toEndWith('.png') ->and(strlen($name))->toBeLessThanOrEqual(33); }); it('ersetzt Leerzeichen, damit der Name ohne Encoding in eine URL passt', function (): void { expect(Slim::sanitizeFileName('Bild Kersrin.jpeg'))->toBe('Bild-Kersrin.jpeg') // Geschuetztes Leerzeichen (macOS-Screenshots) zaehlt ebenfalls als Whitespace ->and(Slim::sanitizeFileName("Foto\u{00A0}Neu.png"))->toBe('Foto-Neu.png'); }); it('laesst kurze, saubere Namen unveraendert', function (): void { expect(Slim::sanitizeFileName('IMG_6524.jpeg'))->toBe('IMG_6524.jpeg') ->and(Slim::sanitizeFileName('ruth-thomas.jpg'))->toBe('ruth-thomas.jpg'); }); it('entfernt unerlaubte Zeichen und Punktfolgen', function (): void { expect(Slim::sanitizeFileName('re/port*?.png'))->toBe('report.png') ->and(Slim::sanitizeFileName('archiv..tar.gz'))->toBe('archivtar.gz'); }); it('liefert auch ohne verwertbaren Namen etwas Brauchbares', function (): void { expect(Slim::sanitizeFileName('***.png'))->toBe('datei.png') ->and(Slim::sanitizeFileName('bild'))->toBe('bild'); });