Test Failed
Push — master ( fb97fd...57694c )
by Hannes
02:15
created

EngineBuilder::setFilter()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 1
dl 0
loc 4
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
use hanneskod\readmetester\Runner\EvalRunner;
15
16
class EngineBuilder
17
{
18
    /**
19
     * @var FilterInterface
20
     */
21
    private $filter;
22
23
    /**
24
     * @var RunnerInterface
25
     */
26
    private $runner;
27
28
    /**
29
     * @var bool
30
     */
31
    private $ignoreUnknownAnnotations = false;
32
33
    public function setIgnoreUnknownAnnotations($flag = true)
34
    {
35
        $this->ignoreUnknownAnnotations = $flag;
36
    }
37
38
    public function setFilter(FilterInterface $filter): self
39
    {
40
        $this->filter = $filter;
41
        return $this;
42
    }
43
44
    public function setRunner(RunnerInterface $runner): self
45
    {
46
        $this->runner = $runner;
47
        return $this;
48
    }
49
50
    public function buildEngine(): Engine
51
    {
52
        return new Engine(
53
            new Parser,
54
            new ExampleFactory(
55
                new ExpectationFactory,
56
                $this->filter ?: new NullFilter,
57
                $this->ignoreUnknownAnnotations
58
            ),
59
            new ExampleTester(
60
                $this->runner ?: new EvalRunner,
61
                new ExpectationEvaluator
62
            )
63
        );
64
    }
65
}
66