Passed
Push — master ( 1863b6...b24285 )
by Steve
32s
created

RangeDifferenceTest::testAncestor()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 5
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
 * (c) Steve Nebes <[email protected]>
4
 *
5
 * For the full copyright and license information, please view the LICENSE
6
 * file that was distributed with this source code.
7
 */
8
9
declare(strict_types=1);
10
11
namespace SN\RangeDifferencer;
12
13
use PHPUnit\Framework\TestCase;
14
15
class RangeDifferenceTest extends TestCase
16
{
17
    public function testGetters(): void
18
    {
19
        $diff = new RangeDifference(0, 1, 2, 3, 4, 5,6);
20
21
        $this->assertSame(0, $diff->getKind());
22
        $this->assertSame(1, $diff->getRightStart());
23
        $this->assertSame(2, $diff->getRightLength());
24
        $this->assertSame(3, $diff->getRightEnd());
25
        $this->assertSame(3, $diff->getLeftStart());
26
        $this->assertSame(4, $diff->getLeftLength());
27
        $this->assertSame(7, $diff->getLeftEnd());
28
        $this->assertSame(5, $diff->getAncestorStart());
29
        $this->assertSame(6, $diff->getAncestorLength());
30
        $this->assertSame(11, $diff->getAncestorEnd());
31
    }
32
33
    public function testGetMaxLength(): void
34
    {
35
        $diff = new RangeDifference(0, 1, 2, 3, 4, 5,6);
36
37
        $this->assertSame(6, $diff->getMaxLength());
38
    }
39
40
    public function testIsEqual(): void
41
    {
42
        $diff1 = new RangeDifference(0, 1, 2, 3, 4, 5,6);
43
        $diff2 = new RangeDifference(0, 1, 2, 3, 4, 5,6);
44
        $diff3 = new RangeDifference(1, 1, 2, 3, 4, 5,6);
45
46
        $this->assertTrue($diff1->isEqual($diff2));
47
        $this->assertFalse($diff1->isEqual($diff3));
48
    }
49
50
    public function testToString(): void
51
    {
52
        $diff = new RangeDifference(RangeDifference::NOCHANGE, 1, 2, 3, 4);
53
        $this->assertSame('RangeDifference {NOCHANGE, Left: (3, 4) Right: (1, 2)}', $diff->__toString());
54
55
        $diff = new RangeDifference(RangeDifference::CONFLICT, 1, 2, 3, 4, 5, 6);
56
        $this->assertSame('RangeDifference {CONFLICT, Left: (3, 4) Right: (1, 2) Ancestor: (5, 6)}', $diff->__toString());
57
58
        $diff = new RangeDifference(RangeDifference::CHANGE);
59
        $this->assertSame('RangeDifference {CHANGE/RIGHT, Left: (0, 0) Right: (0, 0)}', $diff->__toString());
60
61
        $diff = new RangeDifference(RangeDifference::LEFT);
62
        $this->assertSame('RangeDifference {LEFT, Left: (0, 0) Right: (0, 0)}', $diff->__toString());
63
64
        $diff = new RangeDifference(RangeDifference::ANCESTOR);
65
        $this->assertSame('RangeDifference {ANCESTOR, Left: (0, 0) Right: (0, 0)}', $diff->__toString());
66
67
        $diff = new RangeDifference(RangeDifference::ERROR);
68
        $this->assertSame('RangeDifference {ERROR, Left: (0, 0) Right: (0, 0)}', $diff->__toString());
69
    }
70
71
    public function testException(): void
72
    {
73
        $this->expectException(\UnexpectedValueException::class);
74
75
        new RangeDifference(10);
76
    }
77
78
    public function testEmpty(): void
79
    {
80
        $diff = new RangeDifference(RangeDifference::LEFT);
81
82
        $this->assertSame(RangeDifference::LEFT, $diff->getKind());
83
        $this->assertSame(0, $diff->getRightStart());
84
        $this->assertSame(0, $diff->getRightLength());
85
        $this->assertSame(0, $diff->getRightEnd());
86
        $this->assertSame(0, $diff->getLeftStart());
87
        $this->assertSame(0, $diff->getLeftLength());
88
        $this->assertSame(0, $diff->getLeftEnd());
89
        $this->assertSame(0, $diff->getAncestorStart());
90
        $this->assertSame(0, $diff->getAncestorLength());
91
        $this->assertSame(0, $diff->getAncestorEnd());
92
    }
93
94
    public function testRight(): void
95
    {
96
        $diff = new RangeDifference(RangeDifference::RIGHT, 0, 12, 0, 16);
97
98
        $this->assertSame(RangeDifference::RIGHT, $diff->getKind());
99
        $this->assertSame(0, $diff->getRightStart());
100
        $this->assertSame(12, $diff->getRightLength());
101
        $this->assertSame(12, $diff->getRightEnd());
102
        $this->assertSame(0, $diff->getLeftStart());
103
        $this->assertSame(16, $diff->getLeftLength());
104
        $this->assertSame(16, $diff->getLeftEnd());
105
        $this->assertSame(0, $diff->getAncestorStart());
106
        $this->assertSame(0, $diff->getAncestorLength());
107
        $this->assertSame(0, $diff->getAncestorEnd());
108
    }
109
110
    public function testConflict(): void
111
    {
112
        $diff = new RangeDifference(RangeDifference::CONFLICT, 0, 12, 0, 16, 0, 0);
113
114
        $this->assertSame(RangeDifference::CONFLICT, $diff->getKind());
115
        $this->assertSame(0, $diff->getRightStart());
116
        $this->assertSame(12, $diff->getRightLength());
117
        $this->assertSame(12, $diff->getRightEnd());
118
        $this->assertSame(0, $diff->getLeftStart());
119
        $this->assertSame(16, $diff->getLeftLength());
120
        $this->assertSame(16, $diff->getLeftEnd());
121
        $this->assertSame(0, $diff->getAncestorStart());
122
        $this->assertSame(0, $diff->getAncestorLength());
123
        $this->assertSame(0, $diff->getAncestorEnd());
124
    }
125
126
    public function testAncestor(): void
127
    {
128
        $diff = new RangeDifference(RangeDifference::ANCESTOR);
129
130
        $this->assertSame(RangeDifference::ANCESTOR, $diff->getKind());
131
    }
132
133
    public function testNoChange(): void
134
    {
135
        $diff = new RangeDifference(RangeDifference::NOCHANGE, 0, 12, 0, 16, 10, 0);
136
137
        $this->assertSame(RangeDifference::NOCHANGE, $diff->getKind());
138
        $this->assertSame(10, $diff->getAncestorStart());
139
    }
140
141
    public function testChange(): void
142
    {
143
        $diff = new RangeDifference(RangeDifference::CHANGE, 0, 12, 0, 16, 10, 32);
144
145
        $this->assertSame(RangeDifference::CHANGE, $diff->getKind());
146
        $this->assertSame(32, $diff->getAncestorLength());
147
    }
148
149
    public function testError(): void
150
    {
151
        $diff = new RangeDifference(RangeDifference::ERROR, 0, 12, 0, 16, 10, 32);
152
153
        $this->assertSame(RangeDifference::ERROR, $diff->getKind());
154
        $this->assertSame(42, $diff->getAncestorEnd());
155
    }
156
157
    public function testLeft(): void
158
    {
159
        $diff = new RangeDifference(RangeDifference::LEFT, 0, 12, 0, 16, 10, 32);
160
161
        $this->assertSame(RangeDifference::LEFT, $diff->getKind());
162
    }
163
164
    public function testMaxLength(): void
165
    {
166
        $diff = new RangeDifference(RangeDifference::LEFT, 0, 12, 0, 16, 10, 32);
167
168
        $this->assertSame(32, $diff->getMaxLength());
169
    }
170
171
    public function testEquals(): void
172
    {
173
        $diff1 = new RangeDifference(RangeDifference::CHANGE, 0, 12, 0, 16, 10, 32);
174
        $diff2 = new RangeDifference(RangeDifference::CONFLICT, 1, 10, 2, 26, 10, 3);
175
176
        $this->assertFalse($diff1->isEqual($diff2));
177
        $this->assertTrue($diff1->isEqual($diff1));
178
    }
179
}
180