OriginalLineNameCalculatorTest   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 24
c 0
b 0
f 0
dl 0
loc 52
rs 10
wmc 4

4 Methods

Rating   Name   Duplication   Size   Complexity  
A testLineNumber0() 0 4 1
A dataProvider() 0 11 1
A testCalculateOriginalLine() 0 4 1
A setUp() 0 13 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace DaveLiddament\StaticAnalysisResultsBaseliner\Tests\Unit\Plugins\GitDiffHistoryAnalyser\internal;
6
7
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\Common\LineNumber;
8
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\HistoryAnalyser\UnifiedDiffParser\FileMutation;
9
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\HistoryAnalyser\UnifiedDiffParser\LineMutation;
10
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\HistoryAnalyser\UnifiedDiffParser\NewFileName;
11
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\HistoryAnalyser\UnifiedDiffParser\OriginalFileName;
12
use DaveLiddament\StaticAnalysisResultsBaseliner\Plugins\GitDiffHistoryAnalyser\internal\OriginalLineNumberCalculator;
13
use PHPUnit\Framework\TestCase;
14
15
/**
16
 * Tests code that works out what original line number was for the given new line number.
17
 *
18
 * Original file is this:
19
 * dave
20
 * alan
21
 * james
22
 * john
23
 * peter
24
 * jane
25
 *
26
 *
27
 * New file is this:
28
 * dave
29
 * alan
30
 * jack
31
 * peter
32
 * sally
33
 * jane
34
 * jason
35
 * rupert
36
 */
37
final class OriginalLineNameCalculatorTest extends TestCase
38
{
39
    /**
40
     * @var FileMutation
41
     */
42
    private $fileMutation;
43
44
    protected function setUp(): void
45
    {
46
        $originalFileName = new OriginalFileName('foo');
47
        $newFileName = new NewFileName('bar');
48
        $lineMutations = [
49
            LineMutation::originalLineNumber(new LineNumber(3)),
50
            LineMutation::originalLineNumber(new LineNumber(4)),
51
            LineMutation::newLineNumber(new LineNumber(3)),
52
            LineMutation::newLineNumber(new LineNumber(5)),
53
            LineMutation::newLineNumber(new LineNumber(7)),
54
        ];
55
56
        $this->fileMutation = new FileMutation($originalFileName, $newFileName, $lineMutations);
57
    }
58
59
    /**
60
     * @return array<string,array{int,int|null}>
0 ignored issues
show
Documentation Bug introduced by
The doc comment array<string,array{int,int|null}> at position 6 could not be parsed: Expected ':' at position 6, but found 'int'.
Loading history...
61
     */
62
    public function dataProvider(): array
63
    {
64
        return [
65
            'dave' => [1, 1],
66
            'alan' => [2, 2],
67
            'jack' => [3, null],
68
            'peter' => [4, 5],
69
            'sally' => [5, null],
70
            'jane' => [6, 6],
71
            'jason' => [7, null],
72
            'rupert' => [8, 7],
73
        ];
74
    }
75
76
    /**
77
     * @dataProvider dataProvider
78
     */
79
    public function testCalculateOriginalLine(int $newLineNumber, ?int $expectedOriginalLineNumber): void
80
    {
81
        $originalLineNumber = OriginalLineNumberCalculator::calculateOriginalLineNumber($this->fileMutation, $newLineNumber);
82
        $this->assertSame($expectedOriginalLineNumber, $originalLineNumber);
83
    }
84
85
    public function testLineNumber0(): void
86
    {
87
        $originalLineNumber = OriginalLineNumberCalculator::calculateOriginalLineNumber($this->fileMutation, 0);
88
        $this->assertSame(0, $originalLineNumber);
89
    }
90
}
91