Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
13 / 13
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
ConformanceException
100.00% covered (success)
100.00%
13 / 13
100.00% covered (success)
100.00%
1 / 1
3
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
13 / 13
100.00% covered (success)
100.00%
1 / 1
3
1<?php
2
3declare(strict_types=1);
4
5namespace Phpdftk\Pdf\Conformance;
6
7use Phpdftk\Pdf\Conformance\Result\ConformanceResult;
8
9/**
10 * Thrown in strict mode when the document does not conform.
11 */
12final class ConformanceException extends \RuntimeException
13{
14    /** @var list<ConformanceResult> */
15    public readonly array $results;
16
17    /** @param list<ConformanceResult> $results */
18    public function __construct(array $results)
19    {
20        $this->results = $results;
21
22        $messages = [];
23        foreach ($results as $result) {
24            if (!$result->isCompliant) {
25                $errors = $result->getErrors();
26                $messages[] = sprintf(
27                    '%s-%s: %d violation(s) — %s',
28                    $result->profile->getFamily(),
29                    $result->profile->getLevel(),
30                    count($errors),
31                    $errors[0]->message ?? 'unknown',
32                );
33            }
34        }
35
36        parent::__construct('Conformance validation failed: ' . implode('; ', $messages));
37    }
38}