getData())->toBe('Hallo Welt'); expect($qrCode->getErrorCorrectionLevel())->toBe(ErrorCorrectionLevel::M); }); test('QR-Code wirft eine Exception bei leeren Daten', function () { expect(fn () => new QrCode(''))->toThrow(QrCodeException::class); }); test('QR-Code kann als SVG generiert werden', function () { $service = new QrCodeService(); $svg = $service->generateSvg('Test'); expect($svg)->toContain('toContain(''); expect($svg)->toContain('fill="black"'); }); test('QR-Code kann als PNG generiert werden', function () { $service = new QrCodeService(); $png = $service->generatePng('Test'); expect($png)->toStartWith("\x89PNG"); }); test('QR-Code kann als ASCII-Art generiert werden', function () { $service = new QrCodeService(); $ascii = $service->generateAscii('Test'); expect($ascii)->toBeString(); expect(strlen($ascii))->toBeGreaterThan(100); }); test('Fehlerkorrekturlevel beeinflusst die Generierung', function () { $service = new QrCodeService(); $lowMatrix = $service->generateQrCode('Test', ErrorCorrectionLevel::L); $highMatrix = $service->generateQrCode('Test', ErrorCorrectionLevel::H); expect($lowMatrix->getSize())->toBeGreaterThan(0); expect($highMatrix->getSize())->toBeGreaterThan(0); }); test('QR-Code-Version bestimmt die Größe', function () { $version1 = new QrCodeVersion(1); $version10 = new QrCodeVersion(10); expect($version1->getSize())->toBe(21); expect($version10->getSize())->toBe(57); });