Passed
Pull Request — master (#24)
by Dmitriy
37:45 queued 22:43
created

ConfigMergeHelperTest::unsetArrayValueProvider()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 17
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 6
c 2
b 0
f 0
dl 0
loc 17
rs 10
cc 1
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Yiisoft\Composer\Config\Tests\Unit\Util;
6
7
use PHPUnit\Framework\TestCase;
8
use Yiisoft\Arrays\ArrayHelper;
9
use Yiisoft\Arrays\Modifier\ReplaceValue;
10
use Yiisoft\Arrays\Modifier\UnsetValue;
11
12
final class ConfigMergeHelperTest extends TestCase
13
{
14
    /**
15
     * @dataProvider replaceValuesProvider()
16
     * @dataProvider mergeValuesProvider()
17
     * @dataProvider replaceArrayValueProvider()
18
     * @dataProvider unsetArrayValueProvider()
19
     * @dataProvider emptyValuesProvider()
20
     * @param array $arraysToMerge
21
     * @param array $expected
22
     */
23
    public function testMerge(array $arraysToMerge, array $expected): void
24
    {
25
        $actual = ArrayHelper::merge(...$arraysToMerge);
26
        $this->assertEquals($expected, $actual);
27
    }
28
29
    public function replaceValuesProvider(): array
30
    {
31
        return [
32
            [
33
                [
34
                    [1],
35
                    [1],
36
                ],
37
                [1],
38
            ],
39
            [
40
                [
41
                    [1, 2, 3],
42
                    [1, 2, 3],
43
                ],
44
                [1, 2, 3],
45
            ],
46
            [
47
                [
48
                    ['key' => 'value'],
49
                    ['key' => 'value2'],
50
                ],
51
                [
52
                    'key' => 'value2',
53
                ],
54
            ],
55
        ];
56
    }
57
58
    public function mergeValuesProvider(): array
59
    {
60
        return [
61
            [
62
                [
63
                    [1, 2, 3],
64
                    [4, 5, 6],
65
                ],
66
                [1, 2, 3, 4, 5, 6],
67
            ],
68
            [
69
                [
70
                    [['key' => 'value']],
71
                    [['key' => 'value2']],
72
                ],
73
                [
74
                    ['key' => 'value'],
75
                    ['key' => 'value2'],
76
                ],
77
            ],
78
            [
79
                [
80
                    ['key' => ['value']],
81
                    ['key' => ['value2']],
82
                ],
83
                [
84
                    'key' => ['value', 'value2'],
85
                ],
86
            ],
87
        ];
88
    }
89
90
    public function replaceArrayValueProvider(): array
91
    {
92
        return [
93
            [
94
                [
95
                    ['key' => ['value']],
96
                    ['key' => new ReplaceValue('replaced')],
97
                ],
98
                [
99
                    'key' => 'replaced',
100
                ],
101
            ],
102
            [
103
                [
104
                    ['key' => ['value']],
105
                    ['key' => [new ReplaceValue('replaced')]],
106
                ],
107
                [
108
                    'key' => ['replaced'],
109
                ],
110
            ],
111
        ];
112
    }
113
114
    public function unsetArrayValueProvider(): array
115
    {
116
        return [
117
            [
118
                [
119
                    ['key' => ['value']],
120
                    ['key' => new UnsetValue()],
121
                ],
122
                [],
123
            ],
124
            [
125
                [
126
                    ['key' => ['value']],
127
                    ['key' => [new UnsetValue()]],
128
                ],
129
                [
130
                    'key' => [],
131
                ],
132
            ],
133
        ];
134
    }
135
136
    public function emptyValuesProvider(): array
137
    {
138
        return [
139
            [
140
                [],
141
                [],
142
            ],
143
            [
144
                [
145
                    [],
146
                ],
147
                [],
148
            ],
149
            [
150
                [
151
                    [],
152
                    [],
153
                ],
154
                [],
155
            ],
156
        ];
157
    }
158
}
159