Completed
Push — master ( 5927eb...1e13db )
by
unknown
04:04
created

OneOf   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 31
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Test Coverage

Coverage 94.74%
Metric Value
dl 0
loc 31
ccs 18
cts 19
cp 0.9474
rs 10
wmc 5
lcom 0
cbo 3

1 Method

Rating   Name   Duplication   Size   Complexity  
B validate() 0 25 5
1
<?php
2
3
namespace League\JsonGuard\Constraints;
4
5
use League\JsonGuard\ErrorCode;
6
use League\JsonGuard\SubSchemaValidatorFactory;
7
use League\JsonGuard\ValidationError;
8
9
class OneOf implements ContainerInstanceConstraint
10
{
11
    /**
12
     * {@inheritdoc}
13
     */
14 2
    public static function validate($data, $parameter, SubSchemaValidatorFactory $validatorFactory, $pointer = null)
15
    {
16 2
        if (!is_array($parameter)) {
17
            return null;
18
        }
19
20 2
        $passed = 0;
21 2
        foreach ($parameter as $schema) {
22 2
            $validator = $validatorFactory->makeSubSchemaValidator($data, $schema, $pointer);
23 2
            if ($validator->passes()) {
24 2
                $passed++;
25 2
            }
26 2
        }
27 2
        if ($passed !== 1) {
28 2
            return new ValidationError(
29 2
                'Failed matching exactly one of the provided schemas.',
30 2
                ErrorCode::ONE_OF_SCHEMA,
31 2
                $data,
32 2
                $pointer,
33 2
                ['one_of' => $parameter]
34 2
            );
35
        }
36
37 2
        return null;
38
    }
39
}
40