Test Failed
Push — master ( bc5b04...424213 )
by Hannes
03:21
created

EngineBuilder::getRunner()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 7
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 3
nc 2
nop 0
dl 0
loc 7
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types = 1);
4
5
namespace hanneskod\readmetester;
6
7
use hanneskod\readmetester\Example\ExampleFactory;
8
use hanneskod\readmetester\Example\FilterInterface;
9
use hanneskod\readmetester\Example\NullFilter;
10
use hanneskod\readmetester\Parser\Parser;
11
use hanneskod\readmetester\Expectation\ExpectationEvaluator;
12
use hanneskod\readmetester\Expectation\ExpectationFactory;
13
use hanneskod\readmetester\Runner\RunnerInterface;
14
15
class EngineBuilder
16
{
17
    /**
18
     * @var FilterInterface
19
     */
20
    private $filter;
21
22
    /**
23
     * @var RunnerInterface
24
     */
25
    private $runner;
26
27
    /**
28
     * @var bool
29
     */
30
    private $ignoreUnknownAnnotations = false;
31
32
    public function __construct()
33
    {
34
        $this->filter = new NullFilter;
35
    }
36
37
    public function setIgnoreUnknownAnnotations($flag = true)
38
    {
39
        $this->ignoreUnknownAnnotations = $flag;
40
    }
41
42
    public function setFilter(FilterInterface $filter): self
43
    {
44
        $this->filter = $filter;
45
        return $this;
46
    }
47
48
    public function setRunner(RunnerInterface $runner): self
49
    {
50
        $this->runner = $runner;
51
        return $this;
52
    }
53
54
    public function buildEngine(): Engine
55
    {
56
        return new Engine(
57
            new Parser,
58
            new ExampleFactory(
59
                new ExpectationFactory,
60
                $this->getFilter(),
61
                $this->ignoreUnknownAnnotations
62
            ),
63
            new ExampleTester(
64
                $this->getRunner(),
65
                new ExpectationEvaluator
66
            )
67
        );
68
    }
69
70
    private function getFilter(): FilterInterface
71
    {
72
        return $this->filter;
73
    }
74
75
    private function getRunner(): RunnerInterface
76
    {
77
        if (!isset($this->runner)) {
78
            throw new \LogicException('Unable to create engine, runner not set');
79
        }
80
81
        return $this->runner;
82
    }
83
}
84