@@ -28,6 +28,21 @@ class TypedConfigTest extends TestCase
2828 */
2929 private $ typeConfig ;
3030
31+ //--------------------------------------------------------------------------------------------------------------------
32+ /**
33+ * Data provider for invalid mandatory arrays.
34+ *
35+ * @return array
36+ */
37+ public function invalidManArrayCases (): array
38+ {
39+ $ cases = $ this ->invalidOptArrayCases ();
40+
41+ $ cases [] = ['null.array ' , null ];
42+
43+ return $ cases ;
44+ }
45+
3146 //--------------------------------------------------------------------------------------------------------------------
3247 /**
3348 * Data provider for invalid mandatory booleans.
@@ -103,6 +118,17 @@ public function invalidManStringCases(): array
103118 return $ cases ;
104119 }
105120
121+ //--------------------------------------------------------------------------------------------------------------------
122+ /**
123+ * Data provider for invalid optional arrays.
124+ *
125+ * @return array
126+ */
127+ public function invalidOptArrayCases (): array
128+ {
129+ return [['invalid.array ' , null ]];
130+ }
131+
106132 //--------------------------------------------------------------------------------------------------------------------
107133 /**
108134 * Data provider for invalid optional booleans.
@@ -178,6 +204,21 @@ public function testGetConfig(): void
178204 self ::assertSame ($ this ->config , $ this ->typeConfig ->getConfig ());
179205 }
180206
207+ //--------------------------------------------------------------------------------------------------------------------
208+ /**
209+ * Test case for invalid mandatory array.
210+ *
211+ * @param string $key The key.
212+ * @param array|null $default The default value.
213+ *
214+ * @dataProvider invalidManArrayCases
215+ */
216+ public function testInvalidArrayBool (string $ key , ?array $ default ): void
217+ {
218+ $ this ->expectException (TypedConfigException::class);
219+ $ this ->typeConfig ->getManArray ($ key , $ default );
220+ }
221+
181222 //--------------------------------------------------------------------------------------------------------------------
182223 /**
183224 * Test case for invalid mandatory boolean.
@@ -253,6 +294,21 @@ public function testInvalidManString(string $key, ?int $default): void
253294 $ this ->typeConfig ->getManString ($ key , $ default );
254295 }
255296
297+ //--------------------------------------------------------------------------------------------------------------------
298+ /**
299+ * Test case for invalid optional array.
300+ *
301+ * @param string $key The key.
302+ * @param array|null $default The default value.
303+ *
304+ * @dataProvider invalidOptArrayCases
305+ */
306+ public function testInvalidOptArray (string $ key , ?array $ default ): void
307+ {
308+ $ this ->expectException (TypedConfigException::class);
309+ $ this ->typeConfig ->getOptArray ($ key , $ default );
310+ }
311+
256312 //--------------------------------------------------------------------------------------------------------------------
257313 /**
258314 * Test case for invalid optional boolean.
@@ -344,6 +400,22 @@ public function testValidInt(string $key, ?int $default, ?int $expected): void
344400 self ::assertSame ($ value , $ expected );
345401 }
346402
403+ //--------------------------------------------------------------------------------------------------------------------
404+ /**
405+ * Test case for mandatory array.
406+ *
407+ * @param string $key The key.
408+ * @param array|null $default The default value.
409+ * @param array|null $expected The expected value.
410+ *
411+ * @dataProvider validManArrayCases
412+ */
413+ public function testValidManArray (string $ key , ?array $ default , ?array $ expected ): void
414+ {
415+ $ value = $ this ->typeConfig ->getManArray ($ key , $ default );
416+ self ::assertSame ($ value , $ expected );
417+ }
418+
347419 //--------------------------------------------------------------------------------------------------------------------
348420 /**
349421 * Test case for mandatory boolean.
@@ -392,6 +464,22 @@ public function testValidManFloat(string $key, ?float $default, ?float $expected
392464 self ::assertSame ($ value , $ expected );
393465 }
394466
467+ //--------------------------------------------------------------------------------------------------------------------
468+ /**
469+ * Test case for optional array.
470+ *
471+ * @param string $key The key.
472+ * @param array|null $default The default value.
473+ * @param array|null $expected The expected value.
474+ *
475+ * @dataProvider validOptArrayCases
476+ */
477+ public function testValidOptArray (string $ key , ?array $ default , ?array $ expected ): void
478+ {
479+ $ value = $ this ->typeConfig ->getOptArray ($ key , $ default );
480+ self ::assertSame ($ value , $ expected );
481+ }
482+
395483 //--------------------------------------------------------------------------------------------------------------------
396484 /**
397485 * Test case for optional boolean.
@@ -488,6 +576,18 @@ public function testValidString(string $key, ?string $default, ?string $expected
488576 self ::assertSame ($ value , $ expected );
489577 }
490578
579+ //--------------------------------------------------------------------------------------------------------------------
580+ /**
581+ * Data provider for valid mandatory arrays.
582+ *
583+ * @return array
584+ */
585+ public function validManArrayCases (): array
586+ {
587+ return [['valid-array ' , null , ['one ' => '1 ' , 'two ' => '2 ' , 'three ' => '3 ' ]],
588+ ['null.array ' , [], []]];
589+ }
590+
491591 //--------------------------------------------------------------------------------------------------------------------
492592 /**
493593 * Data provider for valid mandatory booleans.
@@ -551,6 +651,21 @@ public function validManStringCases(): array
551651 ['null.string ' , 'default ' , 'default ' ]];
552652 }
553653
654+ //--------------------------------------------------------------------------------------------------------------------
655+ /**
656+ * Data provider for valid optional arrays.
657+ *
658+ * @return array
659+ */
660+ public function validOptArrayCases (): array
661+ {
662+ $ cases = $ this ->validManArrayCases ();
663+
664+ $ cases [] = ['null.array ' , null , null ];
665+
666+ return $ cases ;
667+ }
668+
554669 //--------------------------------------------------------------------------------------------------------------------
555670 /**
556671 * Data provider for valid optional booleans.
0 commit comments