@@ -115,4 +115,106 @@ public function providerFindString(): array
115115 [['key ' => ['key2 ' => 'value ' ]], 'key.nope ' , 'default ' , 'default ' ],
116116 ];
117117 }
118+
119+ /**
120+ * Test.
121+ *
122+ * @dataProvider providerGetArray
123+ *
124+ * @param mixed $data The data
125+ * @param string $key The lookup key
126+ * @param mixed $default The default value
127+ * @param mixed $expected The expected value
128+ *
129+ * @return void
130+ */
131+ public function testGetArray ($ data , string $ key , $ default , $ expected )
132+ {
133+ $ reader = new ArrayReader ($ data );
134+ static ::assertSame ($ expected , $ reader ->getArray ($ key , $ default ));
135+ }
136+
137+ /**
138+ * Provider.
139+ *
140+ * @return array[] The test data
141+ */
142+ public function providerGetArray (): array
143+ {
144+ return [
145+ [[[1 , 2 , 3 , 4 ], [2 , 3 , 4 , 5 , 6 ]], 0 , null , [1 , 2 , 3 , 4 ]],
146+ [[[1 , 2 , 3 , 4 ], [2 , 3 , 4 , 5 , 6 ]], 1 , null , [2 , 3 , 4 , 5 , 6 ]],
147+ [[['key ' => 'value ' ], ['key2 ' => 'value2 ' ]], 0 , null , ['key ' => 'value ' ]],
148+ [[['key ' => 'value ' ], ['key2 ' => 'value2 ' ]], 1 , null , ['key2 ' => 'value2 ' ]],
149+ ];
150+ }
151+
152+ /**
153+ * Test.
154+ *
155+ * @dataProvider providerGetArrayError
156+ *
157+ * @param mixed $data The data
158+ * @param string $key The lookup key
159+ * @param mixed $default The default value
160+ *
161+ * @return void
162+ */
163+ public function testGetArrayError ($ data , string $ key , $ default )
164+ {
165+ $ reader = new ArrayReader ($ data );
166+
167+ $ this ->expectException (InvalidArgumentException::class);
168+
169+ $ reader ->getArray ($ key , $ default );
170+ }
171+
172+ /**
173+ * Provider.
174+ *
175+ * @return array[] The test data
176+ */
177+ public function providerGetArrayError (): array
178+ {
179+ return [
180+ [[[1 , 2 , 3 , 4 ], [2 , 3 , 4 , 5 , 6 ]], 2 , null ],
181+ [[['key ' => 'value ' ], ['key2 ' => 'value2 ' ]], 2 , null ],
182+ ];
183+ }
184+
185+ /**
186+ * Test.
187+ *
188+ * @dataProvider providerFindArray
189+ *
190+ * @param mixed $data The data
191+ * @param string $key The lookup key
192+ * @param mixed $default The default value
193+ * @param mixed $expected The expected value
194+ *
195+ * @return void
196+ */
197+ public function testFindArray ($ data , string $ key , $ default , $ expected )
198+ {
199+ $ reader = new ArrayReader ($ data );
200+ static ::assertSame ($ expected , $ reader ->findArray ($ key , $ default ));
201+ }
202+
203+ /**
204+ * Provider.
205+ *
206+ * @return array[] The test data
207+ */
208+ public function providerFindArray (): array
209+ {
210+ return [
211+ [[[1 , 2 , 3 , 4 ], [2 , 3 , 4 , 5 , 6 ]], 0 , null , [1 , 2 , 3 , 4 ]],
212+ [[[1 , 2 , 3 , 4 ], [2 , 3 , 4 , 5 , 6 ]], 1 , null , [2 , 3 , 4 , 5 , 6 ]],
213+ [[[1 , 2 , 3 , 4 ], [2 , 3 , 4 , 5 , 6 ]], 2 , [], []],
214+ [[[1 , 2 , 3 , 4 ], [2 , 3 , 4 , 5 , 6 ]], 2 , null , null ],
215+ [[['key ' => 'value ' ], ['key2 ' => 'value2 ' ]], 0 , null , ['key ' => 'value ' ]],
216+ [[['key ' => 'value ' ], ['key2 ' => 'value2 ' ]], 1 , null , ['key2 ' => 'value2 ' ]],
217+ [[['key ' => 'value ' ], ['key2 ' => 'value2 ' ]], 2 , null , null ],
218+ ];
219+ }
118220}
0 commit comments