ImmutableSet   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 24
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 4
eloc 12
c 2
b 0
f 0
dl 0
loc 24
ccs 12
cts 12
cp 1
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A remove() 0 9 2
A add() 0 9 2
1
<?php
2
namespace SpareParts\Enum\Set;
3
4
use SpareParts\Enum\Enum;
5
use SpareParts\Enum\Exception\EnumSetMustContainEnumsException;
6
7
class ImmutableSet implements ISet
8
{
9
    use SetTrait;
10
11 3
    public function add(Enum $enum): ISet
12
    {
13 3
        if (!($enum instanceof $this->enumClass)) {
14 1
            throw new EnumSetMustContainEnumsException(sprintf("Expected %s, got %s", $this->enumClass, get_class($enum)));
15
        }
16 2
        $set = $this->set;
17 2
        $set[(string) $enum] = $enum;
18
19 2
        return new static($this->enumClass, $set);
20
    }
21
22 4
    public function remove(Enum $enum): ISet
23
    {
24 4
        if (!($enum instanceof $this->enumClass)) {
25 1
            throw new EnumSetMustContainEnumsException(sprintf("Expected %s, got %s", $this->enumClass, get_class($enum)));
26
        }
27 3
        $set = $this->set;
28 3
        unset($set[(string) $enum]);
29
30 3
        return new static($this->enumClass, $set);
31
    }
32
}
33