@@ -218,4 +218,106 @@ public function providerFindString(): array
218218 [['key ' => ['key2 ' => 'value ' ]], 'key.nope ' , 'default ' , 'default ' ],
219219 ];
220220 }
221+
222+ /**
223+ * Test.
224+ *
225+ * @dataProvider providerGetArray
226+ *
227+ * @param mixed $data The data
228+ * @param string $key The lookup key
229+ * @param mixed $default The default value
230+ * @param mixed $expected The expected value
231+ *
232+ * @return void
233+ */
234+ public function testGetArray ($ data , string $ key , $ default , $ expected )
235+ {
236+ $ reader = new ArrayReader ($ data );
237+ static ::assertSame ($ expected , $ reader ->getArray ($ key , $ default ));
238+ }
239+
240+ /**
241+ * Provider.
242+ *
243+ * @return array[] The test data
244+ */
245+ public function providerGetArray (): array
246+ {
247+ return [
248+ [[[1 , 2 , 3 , 4 ], [2 , 3 , 4 , 5 , 6 ]], 0 , null , [1 , 2 , 3 , 4 ]],
249+ [[[1 , 2 , 3 , 4 ], [2 , 3 , 4 , 5 , 6 ]], 1 , null , [2 , 3 , 4 , 5 , 6 ]],
250+ [[['key ' => 'value ' ], ['key2 ' => 'value2 ' ]], 0 , null , ['key ' => 'value ' ]],
251+ [[['key ' => 'value ' ], ['key2 ' => 'value2 ' ]], 1 , null , ['key2 ' => 'value2 ' ]],
252+ ];
253+ }
254+
255+ /**
256+ * Test.
257+ *
258+ * @dataProvider providerGetArrayError
259+ *
260+ * @param mixed $data The data
261+ * @param string $key The lookup key
262+ * @param mixed $default The default value
263+ *
264+ * @return void
265+ */
266+ public function testGetArrayError ($ data , string $ key , $ default )
267+ {
268+ $ reader = new ArrayReader ($ data );
269+
270+ $ this ->expectException (InvalidArgumentException::class);
271+
272+ $ reader ->getArray ($ key , $ default );
273+ }
274+
275+ /**
276+ * Provider.
277+ *
278+ * @return array[] The test data
279+ */
280+ public function providerGetArrayError (): array
281+ {
282+ return [
283+ [[[1 , 2 , 3 , 4 ], [2 , 3 , 4 , 5 , 6 ]], 2 , null ],
284+ [[['key ' => 'value ' ], ['key2 ' => 'value2 ' ]], 2 , null ],
285+ ];
286+ }
287+
288+ /**
289+ * Test.
290+ *
291+ * @dataProvider providerFindArray
292+ *
293+ * @param mixed $data The data
294+ * @param string $key The lookup key
295+ * @param mixed $default The default value
296+ * @param mixed $expected The expected value
297+ *
298+ * @return void
299+ */
300+ public function testFindArray ($ data , string $ key , $ default , $ expected )
301+ {
302+ $ reader = new ArrayReader ($ data );
303+ static ::assertSame ($ expected , $ reader ->findArray ($ key , $ default ));
304+ }
305+
306+ /**
307+ * Provider.
308+ *
309+ * @return array[] The test data
310+ */
311+ public function providerFindArray (): array
312+ {
313+ return [
314+ [[[1 , 2 , 3 , 4 ], [2 , 3 , 4 , 5 , 6 ]], 0 , null , [1 , 2 , 3 , 4 ]],
315+ [[[1 , 2 , 3 , 4 ], [2 , 3 , 4 , 5 , 6 ]], 1 , null , [2 , 3 , 4 , 5 , 6 ]],
316+ [[[1 , 2 , 3 , 4 ], [2 , 3 , 4 , 5 , 6 ]], 2 , [], []],
317+ [[[1 , 2 , 3 , 4 ], [2 , 3 , 4 , 5 , 6 ]], 2 , null , null ],
318+ [[['key ' => 'value ' ], ['key2 ' => 'value2 ' ]], 0 , null , ['key ' => 'value ' ]],
319+ [[['key ' => 'value ' ], ['key2 ' => 'value2 ' ]], 1 , null , ['key2 ' => 'value2 ' ]],
320+ [[['key ' => 'value ' ], ['key2 ' => 'value2 ' ]], 2 , null , null ],
321+ ];
322+ }
221323}
0 commit comments