Merge "DatabaseMssql: Don't duplicate body of makeList()"
[mediawiki.git] / tests / phpunit / includes / libs / ArrayUtilsTest.php
blobb5ea7b7259ff49ffd1ff45121d0c47a29a75614f
1 <?php
2 /**
3 * Test class for ArrayUtils class
5 * @group Database
6 */
8 class ArrayUtilsTest extends PHPUnit_Framework_TestCase {
9 private $search;
11 /**
12 * @covers ArrayUtils::findLowerBound
13 * @dataProvider provideFindLowerBound
15 function testFindLowerBound(
16 $valueCallback, $valueCount, $comparisonCallback, $target, $expected
17 ) {
18 $this->assertSame(
19 ArrayUtils::findLowerBound(
20 $valueCallback, $valueCount, $comparisonCallback, $target
21 ), $expected
25 function provideFindLowerBound() {
26 $self = $this;
27 $indexValueCallback = function ( $size ) use ( $self ) {
28 return function ( $val ) use ( $self, $size ) {
29 $self->assertTrue( $val >= 0 );
30 $self->assertTrue( $val < $size );
31 return $val;
34 $comparisonCallback = function ( $a, $b ) {
35 return $a - $b;
38 return array(
39 array(
40 $indexValueCallback( 0 ),
42 $comparisonCallback,
44 false,
46 array(
47 $indexValueCallback( 1 ),
49 $comparisonCallback,
50 -1,
51 false,
53 array(
54 $indexValueCallback( 1 ),
56 $comparisonCallback,
60 array(
61 $indexValueCallback( 1 ),
63 $comparisonCallback,
67 array(
68 $indexValueCallback( 2 ),
70 $comparisonCallback,
71 -1,
72 false,
74 array(
75 $indexValueCallback( 2 ),
77 $comparisonCallback,
81 array(
82 $indexValueCallback( 2 ),
84 $comparisonCallback,
85 0.5,
88 array(
89 $indexValueCallback( 2 ),
91 $comparisonCallback,
95 array(
96 $indexValueCallback( 2 ),
98 $comparisonCallback,
99 1.5,
102 array(
103 $indexValueCallback( 3 ),
105 $comparisonCallback,
109 array(
110 $indexValueCallback( 3 ),
112 $comparisonCallback,
113 1.5,
116 array(
117 $indexValueCallback( 3 ),
119 $comparisonCallback,
123 array(
124 $indexValueCallback( 3 ),
126 $comparisonCallback,
134 * @covers ArrayUtils::arrayDiffAssocRecursive
135 * @dataProvider provideArrayDiffAssocRecursive
137 function testArrayDiffAssocRecursive( $expected ) {
138 $args = func_get_args();
139 array_shift( $args );
140 $this->assertEquals( call_user_func_array(
141 'ArrayUtils::arrayDiffAssocRecursive', $args
142 ), $expected );
145 function provideArrayDiffAssocRecursive() {
146 return array(
147 array(
148 array(),
149 array(),
150 array(),
152 array(
153 array(),
154 array(),
155 array(),
156 array(),
158 array(
159 array( 1 ),
160 array( 1 ),
161 array(),
163 array(
164 array( 1 ),
165 array( 1 ),
166 array(),
167 array(),
169 array(
170 array(),
171 array(),
172 array( 1 ),
174 array(
175 array(),
176 array(),
177 array( 1 ),
178 array( 2 ),
180 array(
181 array( '' => 1 ),
182 array( '' => 1 ),
183 array(),
185 array(
186 array(),
187 array(),
188 array( '' => 1 ),
190 array(
191 array( 1 ),
192 array( 1 ),
193 array( 2 ),
195 array(
196 array(),
197 array( 1 ),
198 array( 2 ),
199 array( 1 ),
201 array(
202 array(),
203 array( 1 ),
204 array( 1, 2 ),
206 array(
207 array( 1 => 1 ),
208 array( 1 => 1 ),
209 array( 1 ),
211 array(
212 array(),
213 array( 1 => 1 ),
214 array( 1 ),
215 array( 1 => 1),
217 array(
218 array(),
219 array( 1 => 1 ),
220 array( 1, 1, 1 ),
222 array(
223 array(),
224 array( array() ),
225 array(),
227 array(
228 array(),
229 array( array( array() ) ),
230 array(),
232 array(
233 array( 1, array( 1 ) ),
234 array( 1, array( 1 ) ),
235 array(),
237 array(
238 array( 1 ),
239 array( 1, array( 1 ) ),
240 array( 2, array( 1 ) ),
242 array(
243 array(),
244 array( 1, array( 1 ) ),
245 array( 2, array( 1 ) ),
246 array( 1, array( 2 ) ),
248 array(
249 array( 1 ),
250 array( 1, array() ),
251 array( 2 ),
253 array(
254 array(),
255 array( 1, array() ),
256 array( 2 ),
257 array( 1 ),
259 array(
260 array( 1, array( 1 => 2 ) ),
261 array( 1, array( 1, 2 ) ),
262 array( 2, array( 1 ) ),
264 array(
265 array( 1 ),
266 array( 1, array( 1, 2 ) ),
267 array( 2, array( 1 ) ),
268 array( 2, array( 1 => 2 ) ),
270 array(
271 array( 1 => array( 1, 2 ) ),
272 array( 1, array( 1, 2 ) ),
273 array( 1, array( 2 ) ),
275 array(
276 array( 1 => array( array( 2, 3 ), 2 ) ),
277 array( 1, array( array( 2, 3 ), 2 ) ),
278 array( 1, array( 2 ) ),
280 array(
281 array( 1 => array( array( 2 ), 2 ) ),
282 array( 1, array( array( 2, 3 ), 2 ) ),
283 array( 1, array( array( 1 => 3 ) ) ),
285 array(
286 array( 1 => array( 1 => 2 ) ),
287 array( 1, array( array( 2, 3 ), 2 ) ),
288 array( 1, array( array( 1 => 3, 0 => 2 ) ) ),
290 array(
291 array( 1 => array( 1 => 2 ) ),
292 array( 1, array( array( 2, 3 ), 2 ) ),
293 array( 1, array( array( 1 => 3 ) ) ),
294 array( 1 => array( array( 2 ) ) ),
296 array(
297 array(),
298 array( 1, array( array( 2, 3 ), 2 ) ),
299 array( 1 => array( 1 => 2, 0 => array( 1 => 3, 0 => 2 ) ), 0 => 1 ),
301 array(
302 array(),
303 array( 1, array( array( 2, 3 ), 2 ) ),
304 array( 1 => array( 1 => 2 ) ),
305 array( 1 => array( array( 1 => 3 ) ) ),
306 array( 1 => array( array( 2 ) ) ),
307 array( 1 ),