Completed
Push — master ( 446020...5be29e )
by Pablo
03:42
created

PolygonValueObject::guard()   C

Complexity

Conditions 7
Paths 8

Size

Total Lines 27
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 16
CRAP Score 7

Importance

Changes 0
Metric Value
dl 0
loc 27
rs 6.7272
c 0
b 0
f 0
ccs 16
cts 16
cp 1
cc 7
eloc 14
nc 8
nop 1
crap 7
1
<?php
2
3
namespace PhpValueObjects\Spatial;
4
5
use PhpValueObjects\AbstractValueObject;
6
use PhpValueObjects\Spatial\Exception\InvalidPolygonException;
7
8
class PolygonValueObject extends AbstractValueObject
9
{
10
    /**
11
     * @param array $value
12
     * @throws InvalidPolygonException
13
     */
14 7
    protected function guard($value)
15
    {
16 7
        if (false === is_array($value)) {
17 1
            throw new InvalidPolygonException();
18
        }
19
20 6
        if (3 > count($value)) {
21 1
            throw new InvalidPolygonException();
22
        }
23
24 5
        $first = $value[0];
25 5
        $end = end($value);
26
27 5
        foreach ($value as $point) {
28 5
            if (false === is_array($point)) {
29 1
                throw new InvalidPolygonException();
30
            }
31
32 5
            if (2 !== count($point)) {
33 1
                throw new InvalidPolygonException();
34
            }
35 4
        }
36
37 3
        if (false === ($first == $end)) {
38 1
            throw new InvalidPolygonException();
39
        }
40
    }
41
}