BaseLineResultsComparatorTest::setUp()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 6
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 8
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace DaveLiddament\StaticAnalysisResultsBaseliner\Tests\Unit\Core\Analyser\internal;
6
7
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\Analyser\internal\BaseLineResultsComparator;
8
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\Common\LineNumber;
9
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\Common\PreviousLocation;
10
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\Common\RelativeFileName;
11
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\Common\Severity;
12
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\Common\Type;
13
use DaveLiddament\StaticAnalysisResultsBaseliner\Tests\Helpers\AnalysisResultsAdderTrait;
14
use DaveLiddament\StaticAnalysisResultsBaseliner\Tests\Helpers\BaseLineResultsBuilder;
15
use PHPUnit\Framework\TestCase;
16
17
final class BaseLineResultsComparatorTest extends TestCase
18
{
19
    use AnalysisResultsAdderTrait;
20
21
    private const FILE_1 = 'one.txt';
22
    private const FILE_2 = 'two.txt';
23
    private const FILE_3 = 'three.txt';
24
    private const FILE_4 = 'four.txt';
25
    private const LINE_1 = 1;
26
    private const LINE_2 = 2;
27
    private const TYPE_1 = 'TYPE1';
28
    private const TYPE_2 = 'TYPE2';
29
30
    /**
31
     * @var BaseLineResultsComparator
32
     */
33
    private $baseLineResultsComparator;
34
35
    protected function setUp(): void
36
    {
37
        $baseLineResultsBuilder = new BaseLineResultsBuilder();
38
        $baseLineResultsBuilder->add(self::FILE_1, self::LINE_1, self::TYPE_1, Severity::error());
39
        $baseLineResultsBuilder->add(self::FILE_2, self::LINE_2, self::TYPE_2, Severity::error());
40
        $baseLineResultsBuilder->add(self::FILE_4, self::LINE_2, self::TYPE_1, Severity::error());
41
        $baseLineResultsBuilder->add(self::FILE_4, self::LINE_2, self::TYPE_2, Severity::error());
42
        $this->baseLineResultsComparator = new BaseLineResultsComparator($baseLineResultsBuilder->build());
43
    }
44
45
    /**
46
     * @return array<int,array{bool,string,int,string}>
0 ignored issues
show
Documentation Bug introduced by
The doc comment array<int,array{bool,string,int,string}> at position 6 could not be parsed: Expected ':' at position 6, but found 'bool'.
Loading history...
47
     */
48
    public function dataProvider(): array
49
    {
50
        return [
51
            // [<expected result>, <file>, <line>, <type>]
52
            [
53
                false,
54
                self::FILE_3,
55
                self::LINE_1,
56
                self::TYPE_1,
57
            ],
58
            [
59
                true,
60
                self::FILE_1,
61
                self::LINE_1,
62
                self::TYPE_1,
63
            ],
64
            [
65
                true,
66
                self::FILE_1,
67
                self::LINE_1,
68
                self::TYPE_1,
69
            ],
70
            [
71
                false,
72
                self::FILE_2,
73
                self::LINE_1,
74
                self::TYPE_1,
75
            ],
76
            [
77
                false,
78
                self::FILE_1,
79
                self::LINE_2,
80
                self::TYPE_1,
81
            ],
82
            [
83
                false,
84
                self::FILE_2,
85
                self::LINE_2,
86
                self::TYPE_1,
87
            ],
88
            [
89
                false,
90
                self::FILE_1,
91
                self::LINE_1,
92
                self::TYPE_2,
93
            ],
94
            [
95
                false,
96
                self::FILE_2,
97
                self::LINE_1,
98
                self::TYPE_2,
99
            ],
100
            [
101
                false,
102
                self::FILE_1,
103
                self::LINE_2,
104
                self::TYPE_2,
105
            ],
106
            [
107
                false,
108
                self::FILE_4,
109
                self::LINE_1,
110
                self::TYPE_1,
111
            ],
112
            [
113
                true,
114
                self::FILE_4,
115
                self::LINE_2,
116
                self::TYPE_1,
117
            ],
118
            [
119
                true,
120
                self::FILE_4,
121
                self::LINE_2,
122
                self::TYPE_2,
123
            ],
124
        ];
125
    }
126
127
    /**
128
     * @dataProvider dataProvider
129
     */
130
    public function testInBaseLine(bool $expected, string $fileName, int $lineNumber, string $type): void
131
    {
132
        $location = PreviousLocation::fromFileNameAndLineNumber(
133
            new RelativeFileName($fileName),
134
            new LineNumber($lineNumber),
135
        );
136
137
        $actual = $this->baseLineResultsComparator->isInBaseLine($location, new Type($type));
138
        $this->assertSame($expected, $actual);
139
    }
140
}
141