Completed
Push — master ( 41ae82...437c90 )
by Dave
13s queued 11s
created

BaseLineResultsComparatorTest   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 101
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 56
c 0
b 0
f 0
dl 0
loc 101
rs 10
wmc 3

3 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 6 1
A testInBaseLine() 0 9 1
A dataProvider() 0 57 1
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\Type;
12
use DaveLiddament\StaticAnalysisResultsBaseliner\Tests\Helpers\AnalysisResultsAdderTrait;
13
use DaveLiddament\StaticAnalysisResultsBaseliner\Tests\Helpers\BaseLineResultsBuilder;
14
use PHPUnit\Framework\TestCase;
15
16
class BaseLineResultsComparatorTest extends TestCase
17
{
18
    use AnalysisResultsAdderTrait;
19
20
    private const FILE_1 = 'one.txt';
21
    private const FILE_2 = 'two.txt';
22
    private const FILE_3 = 'three.txt';
23
    private const LINE_1 = 1;
24
    private const LINE_2 = 2;
25
    private const TYPE_1 = 'TYPE1';
26
    private const TYPE_2 = 'TYPE2';
27
28
    /**
29
     * @var BaseLineResultsComparator
30
     */
31
    private $baseLineResultsComparator;
32
33
    protected function setUp(): void
34
    {
35
        $baseLineResultsBuilder = new BaseLineResultsBuilder();
36
        $baseLineResultsBuilder->add(self::FILE_1, self::LINE_1, self::TYPE_1);
37
        $baseLineResultsBuilder->add(self::FILE_2, self::LINE_2, self::TYPE_2);
38
        $this->baseLineResultsComparator = new BaseLineResultsComparator($baseLineResultsBuilder->build());
39
    }
40
41
    /**
42
     * @psalm-return array<int,array{bool,string,int,string}>
43
     */
44
    public function dataProvider(): array
45
    {
46
        return [
47
            // [<expected result>, <file>, <line>, <type>]
48
            [
49
                false,
50
                self::FILE_3,
51
                self::LINE_1,
52
                self::TYPE_1,
53
            ],
54
            [
55
                true,
56
                self::FILE_1,
57
                self::LINE_1,
58
                self::TYPE_1,
59
            ],
60
            [
61
                true,
62
                self::FILE_1,
63
                self::LINE_1,
64
                self::TYPE_1,
65
            ],
66
            [
67
                false,
68
                self::FILE_2,
69
                self::LINE_1,
70
                self::TYPE_1,
71
            ],
72
            [
73
                false,
74
                self::FILE_1,
75
                self::LINE_2,
76
                self::TYPE_1,
77
            ],
78
            [
79
                false,
80
                self::FILE_2,
81
                self::LINE_2,
82
                self::TYPE_1,
83
            ],
84
            [
85
                false,
86
                self::FILE_1,
87
                self::LINE_1,
88
                self::TYPE_2,
89
            ],
90
            [
91
                false,
92
                self::FILE_2,
93
                self::LINE_1,
94
                self::TYPE_2,
95
            ],
96
            [
97
                false,
98
                self::FILE_1,
99
                self::LINE_2,
100
                self::TYPE_2,
101
            ],
102
        ];
103
    }
104
105
    /**
106
     * @dataProvider dataProvider
107
     */
108
    public function testInBaseLine(bool $expected, string $fileName, int $lineNumber, string $type): void
109
    {
110
        $location = PreviousLocation::fromFileNameAndLineNumber(
111
            new RelativeFileName($fileName),
112
            new LineNumber($lineNumber)
113
        );
114
115
        $actual = $this->baseLineResultsComparator->isInBaseLine($location, new Type($type));
116
        $this->assertSame($expected, $actual);
117
    }
118
}
119