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

PolygonValueObject   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 34
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 7
lcom 0
cbo 2
dl 0
loc 34
rs 10
c 0
b 0
f 0
ccs 16
cts 16
cp 1

1 Method

Rating   Name   Duplication   Size   Complexity  
C guard() 0 27 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
}