Passed
Push — master ( 6e9a75...0966bf )
by Jordan
08:50
created

ComplexNumbers   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 15
dl 0
loc 38
ccs 0
cts 19
cp 0
rs 10
c 1
b 0
f 0
wmc 9

1 Method

Rating   Name   Duplication   Size   Complexity  
B make() 0 25 9
1
<?php
2
3
namespace Samsara\Fermat;
4
5
use Samsara\Exceptions\UsageError\IntegrityConstraint;
6
use Samsara\Fermat\Types\Base\Interfaces\Groups\NumberCollectionInterface;
7
use Samsara\Fermat\Types\Base\Interfaces\Numbers\SimpleNumberInterface;
8
use Samsara\Fermat\Values\ImmutableComplexNumber;
9
use Samsara\Fermat\Values\MutableComplexNumber;
10
11
class ComplexNumbers
12
{
13
14
    public const IMMUTABLE_COMPLEX = ImmutableComplexNumber::class;
15
    public const MUTABLE_COMPLEX = MutableComplexNumber::class;
16
17
    /**
18
     * @param $type
19
     * @param $value
20
     *
21
     * @return Types\ComplexNumber
22
     * @throws IntegrityConstraint
23
     */
24
    public static function make($type, $value)
25
    {
26
27
        if (is_string($value)) {
28
            if ($type === self::MUTABLE_COMPLEX) {
29
                return MutableComplexNumber::makeFromString($value);
30
            }
31
32
            return ImmutableComplexNumber::makeFromString($value);
33
        }
34
35
        if ($value instanceof NumberCollectionInterface && $value->count() === 2) {
36
            if ($type === self::MUTABLE_COMPLEX) {
37
                return new MutableComplexNumber($value->get(0), $value->get(1));
38
            }
39
40
            return new ImmutableComplexNumber($value->get(0), $value->get(1));
41
        }
42
43
        if (is_array($value) && count($value) === 2) {
44
            if ($type === self::MUTABLE_COMPLEX) {
45
                return new MutableComplexNumber($value[0], $value[1]);
46
            }
47
48
            return new ImmutableComplexNumber($value[0], $value[1]);
49
        }
50
51
    }
52
53
}