Merge "Get file from WikiFilePage, instead of ImagePage"
[lhc/web/wiklou.git] / tests / phpunit / includes / libs / ArrayUtilsTest.php
1 <?php
2 /**
3 * Test class for ArrayUtils class
4 *
5 * @group Database
6 */
7
8 class ArrayUtilsTest extends PHPUnit_Framework_TestCase {
9 private $search;
10
11 /**
12 * @covers ArrayUtils::findLowerBound
13 * @dataProvider provideFindLowerBound
14 */
15 function testFindLowerBound(
16 $valueCallback, $valueCount, $comparisonCallback, $target, $expected
17 ) {
18 $this->assertSame(
19 ArrayUtils::findLowerBound(
20 $valueCallback, $valueCount, $comparisonCallback, $target
21 ), $expected
22 );
23 }
24
25 function provideFindLowerBound() {
26 $indexValueCallback = function ( $size ) {
27 return function ( $val ) use ( $size ) {
28 $this->assertTrue( $val >= 0 );
29 $this->assertTrue( $val < $size );
30 return $val;
31 };
32 };
33 $comparisonCallback = function ( $a, $b ) {
34 return $a - $b;
35 };
36
37 return array(
38 array(
39 $indexValueCallback( 0 ),
40 0,
41 $comparisonCallback,
42 1,
43 false,
44 ),
45 array(
46 $indexValueCallback( 1 ),
47 1,
48 $comparisonCallback,
49 -1,
50 false,
51 ),
52 array(
53 $indexValueCallback( 1 ),
54 1,
55 $comparisonCallback,
56 0,
57 0,
58 ),
59 array(
60 $indexValueCallback( 1 ),
61 1,
62 $comparisonCallback,
63 1,
64 0,
65 ),
66 array(
67 $indexValueCallback( 2 ),
68 2,
69 $comparisonCallback,
70 -1,
71 false,
72 ),
73 array(
74 $indexValueCallback( 2 ),
75 2,
76 $comparisonCallback,
77 0,
78 0,
79 ),
80 array(
81 $indexValueCallback( 2 ),
82 2,
83 $comparisonCallback,
84 0.5,
85 0,
86 ),
87 array(
88 $indexValueCallback( 2 ),
89 2,
90 $comparisonCallback,
91 1,
92 1,
93 ),
94 array(
95 $indexValueCallback( 2 ),
96 2,
97 $comparisonCallback,
98 1.5,
99 1,
100 ),
101 array(
102 $indexValueCallback( 3 ),
103 3,
104 $comparisonCallback,
105 1,
106 1,
107 ),
108 array(
109 $indexValueCallback( 3 ),
110 3,
111 $comparisonCallback,
112 1.5,
113 1,
114 ),
115 array(
116 $indexValueCallback( 3 ),
117 3,
118 $comparisonCallback,
119 2,
120 2,
121 ),
122 array(
123 $indexValueCallback( 3 ),
124 3,
125 $comparisonCallback,
126 3,
127 2,
128 ),
129 );
130 }
131
132 /**
133 * @covers ArrayUtils::arrayDiffAssocRecursive
134 * @dataProvider provideArrayDiffAssocRecursive
135 */
136 function testArrayDiffAssocRecursive( $expected ) {
137 $args = func_get_args();
138 array_shift( $args );
139 $this->assertEquals( call_user_func_array(
140 'ArrayUtils::arrayDiffAssocRecursive', $args
141 ), $expected );
142 }
143
144 function provideArrayDiffAssocRecursive() {
145 return array(
146 array(
147 array(),
148 array(),
149 array(),
150 ),
151 array(
152 array(),
153 array(),
154 array(),
155 array(),
156 ),
157 array(
158 array( 1 ),
159 array( 1 ),
160 array(),
161 ),
162 array(
163 array( 1 ),
164 array( 1 ),
165 array(),
166 array(),
167 ),
168 array(
169 array(),
170 array(),
171 array( 1 ),
172 ),
173 array(
174 array(),
175 array(),
176 array( 1 ),
177 array( 2 ),
178 ),
179 array(
180 array( '' => 1 ),
181 array( '' => 1 ),
182 array(),
183 ),
184 array(
185 array(),
186 array(),
187 array( '' => 1 ),
188 ),
189 array(
190 array( 1 ),
191 array( 1 ),
192 array( 2 ),
193 ),
194 array(
195 array(),
196 array( 1 ),
197 array( 2 ),
198 array( 1 ),
199 ),
200 array(
201 array(),
202 array( 1 ),
203 array( 1, 2 ),
204 ),
205 array(
206 array( 1 => 1 ),
207 array( 1 => 1 ),
208 array( 1 ),
209 ),
210 array(
211 array(),
212 array( 1 => 1 ),
213 array( 1 ),
214 array( 1 => 1 ),
215 ),
216 array(
217 array(),
218 array( 1 => 1 ),
219 array( 1, 1, 1 ),
220 ),
221 array(
222 array(),
223 array( array() ),
224 array(),
225 ),
226 array(
227 array(),
228 array( array( array() ) ),
229 array(),
230 ),
231 array(
232 array( 1, array( 1 ) ),
233 array( 1, array( 1 ) ),
234 array(),
235 ),
236 array(
237 array( 1 ),
238 array( 1, array( 1 ) ),
239 array( 2, array( 1 ) ),
240 ),
241 array(
242 array(),
243 array( 1, array( 1 ) ),
244 array( 2, array( 1 ) ),
245 array( 1, array( 2 ) ),
246 ),
247 array(
248 array( 1 ),
249 array( 1, array() ),
250 array( 2 ),
251 ),
252 array(
253 array(),
254 array( 1, array() ),
255 array( 2 ),
256 array( 1 ),
257 ),
258 array(
259 array( 1, array( 1 => 2 ) ),
260 array( 1, array( 1, 2 ) ),
261 array( 2, array( 1 ) ),
262 ),
263 array(
264 array( 1 ),
265 array( 1, array( 1, 2 ) ),
266 array( 2, array( 1 ) ),
267 array( 2, array( 1 => 2 ) ),
268 ),
269 array(
270 array( 1 => array( 1, 2 ) ),
271 array( 1, array( 1, 2 ) ),
272 array( 1, array( 2 ) ),
273 ),
274 array(
275 array( 1 => array( array( 2, 3 ), 2 ) ),
276 array( 1, array( array( 2, 3 ), 2 ) ),
277 array( 1, array( 2 ) ),
278 ),
279 array(
280 array( 1 => array( array( 2 ), 2 ) ),
281 array( 1, array( array( 2, 3 ), 2 ) ),
282 array( 1, array( array( 1 => 3 ) ) ),
283 ),
284 array(
285 array( 1 => array( 1 => 2 ) ),
286 array( 1, array( array( 2, 3 ), 2 ) ),
287 array( 1, array( array( 1 => 3, 0 => 2 ) ) ),
288 ),
289 array(
290 array( 1 => array( 1 => 2 ) ),
291 array( 1, array( array( 2, 3 ), 2 ) ),
292 array( 1, array( array( 1 => 3 ) ) ),
293 array( 1 => array( array( 2 ) ) ),
294 ),
295 array(
296 array(),
297 array( 1, array( array( 2, 3 ), 2 ) ),
298 array( 1 => array( 1 => 2, 0 => array( 1 => 3, 0 => 2 ) ), 0 => 1 ),
299 ),
300 array(
301 array(),
302 array( 1, array( array( 2, 3 ), 2 ) ),
303 array( 1 => array( 1 => 2 ) ),
304 array( 1 => array( array( 1 => 3 ) ) ),
305 array( 1 => array( array( 2 ) ) ),
306 array( 1 ),
307 ),
308 );
309 }
310 }