Passed
Pull Request — master (#50)
by Marco
02:46
created

testMergeWithPreservesOriginalInstanceIfMergedWithEmptyChanges()   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 9.4285
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace RoaveTest\BackwardCompatibility;
6
7
use PHPUnit\Framework\TestCase;
8
use Roave\BackwardCompatibility\Change;
9
use Roave\BackwardCompatibility\Changes;
10
use function array_fill;
11
use function iterator_to_array;
12
use function random_int;
13
use function serialize;
14
use function unserialize;
15
16
/**
17
 * @covers \Roave\BackwardCompatibility\Changes
18
 */
19
final class ChangesTest extends TestCase
20
{
21
    public function testMergeWith() : void
22
    {
23
        $changes1 = Changes::fromList(Change::changed('a', true));
24
        $changes2 = Changes::fromList(Change::removed('b', false));
25
26
        $frozen1 = unserialize(serialize($changes1));
27
        $frozen2 = unserialize(serialize($changes2));
28
29
        self::assertEquals(
30
            Changes::fromList(
31
                Change::changed('a', true),
32
                Change::removed('b', false)
33
            ),
34
            $changes1->mergeWith($changes2)
35
        );
36
        self::assertEquals(
37
            Changes::fromList(
38
                Change::removed('b', false),
39
                Change::changed('a', true)
40
            ),
41
            $changes2->mergeWith($changes1)
42
        );
43
44
        self::assertEquals($frozen1, $changes1, 'Original Changes instance not mutated');
45
        self::assertEquals($frozen2, $changes2, 'Original Changes instance not mutated');
46
    }
47
48
    public function testMergeWithPreservesOriginalInstanceIfMergedWithEmptyChanges() : void
49
    {
50
        $changes = Changes::fromList(Change::changed('a', true));
51
52
        self::assertSame($changes, $changes->mergeWith(Changes::empty()));
53
    }
54
55
    public function testFromList() : void
56
    {
57
        $change = Change::added('added', true);
58
59
        self::assertSame(
60
            [$change],
61
            iterator_to_array(Changes::fromList($change))
62
        );
63
    }
64
65
    public function testCount() : void
66
    {
67
        $count = random_int(1, 10);
68
69
        self::assertCount(
70
            $count,
71
            Changes::fromList(...array_fill(0, $count, Change::added('foo', true)))
72
        );
73
    }
74
}
75