$expected */ public function testFindSignatureZones(string $filePath, array $expected): void { $content = file_get_contents($filePath); if (false === $content) { throw new \LogicException("Unable to read file {$filePath}"); } $actual = self::$parser->findSignatureZones($content); self::assertEquals(count($expected), count($actual)); foreach ($actual as $index => $signatureZone) { self::assertObjectEquals($expected[$index], $signatureZone); } } public static function provideFiles(): iterable { yield [ __DIR__.'/data/signature_2_signature_page_1.pdf', [ new PDFSignatureZone( 127.7, 95.289, 180.0, 180.0, $page = new PDFPage(0, 595.30393, 841.8897) ), new PDFSignatureZone( 269.5, 95.289, 180.0, 180.0, $page, ), ], ]; } }