CompositeCheckError   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 48
Duplicated Lines 0 %

Test Coverage

Coverage 38.46%

Importance

Changes 2
Bugs 1 Features 0
Metric Value
eloc 11
dl 0
loc 48
ccs 5
cts 13
cp 0.3846
rs 10
c 2
b 1
f 0
wmc 6

4 Methods

Rating   Name   Duplication   Size   Complexity  
A getNestedErrors() 0 3 1
A __construct() 0 4 1
A equalTo() 0 5 3
A hasSameNestedErrorsWith() 0 5 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Smoren\Validator\Exceptions;
6
7
final class CompositeCheckError extends CheckError
8
{
9
    /**
10
     * @var array<ValidationError>
11
     */
12
    protected array $nestedErrors;
13
14
    /**
15
     * @param string $name
16
     * @param mixed $value
17
     * @param array<ValidationError> $errors
18
     */
19 9
    public function __construct(string $name, $value, array $errors)
20
    {
21 9
        parent::__construct($name, $value, []);
22 9
        $this->nestedErrors = $errors;
23
    }
24
25
    /**
26
     * @return array<ValidationError>
27
     */
28 9
    public function getNestedErrors(): array
29
    {
30 9
        return $this->nestedErrors;
31
    }
32
33
    /**
34
     * @param CheckError $error
35
     *
36
     * @return bool
37
     */
38
    public function equalTo(CheckError $error): bool
39
    {
40
        return $error instanceof CompositeCheckError
41
            && parent::equalTo($error)
42
            && $this->hasSameNestedErrorsWith($error);
43
    }
44
45
    /**
46
     * @param CompositeCheckError $error
47
     *
48
     * @return bool
49
     */
50
    protected function hasSameNestedErrorsWith(CompositeCheckError $error): bool
51
    {
52
        return (
53
            array_map(fn ($e) => $e->getViolatedRestrictions(), $this->nestedErrors) ===
54
            array_map(fn ($e) => $e->getViolatedRestrictions(), $error->nestedErrors)
55
        );
56
    }
57
}
58