@@ -230,4 +230,67 @@ public function ofArrays_fail()
230230 $ this ->assertSame ($ expected , $ e ->getMessage ());
231231 }
232232 }
233+
234+ /**
235+ * @test
236+ * @covers \DominionEnterprises\Filter\Arrays::ofArray
237+ */
238+ public function ofArray ()
239+ {
240+ $ expected = array ('key1 ' => 1 , 'key2 ' => 2 );
241+ $ spec = array ('key1 ' => array (array ('uint ' )), 'key2 ' => array (array ('uint ' )));
242+ $ this ->assertSame ($ expected , A::ofArray (array ('key1 ' => '1 ' , 'key2 ' => '2 ' ), $ spec ));
243+ }
244+
245+ /**
246+ * @test
247+ * @covers \DominionEnterprises\Filter\Arrays::ofArray
248+ */
249+ public function ofArray_chained ()
250+ {
251+ $ expected = array ('key ' => 3.3 );
252+ $ spec = array ('key ' => array (array ('trim ' , 'a ' ), array ('floatval ' )));
253+ $ this ->assertSame ($ expected , A::ofArray (array ('key ' => 'a3.3 ' ), $ spec ));
254+ }
255+
256+ /**
257+ * @test
258+ * @covers \DominionEnterprises\Filter\Arrays::ofArray
259+ */
260+ public function ofArray_requiredSuccess ()
261+ {
262+ $ expected = array ('key2 ' => 2 );
263+ $ spec = array ('key1 ' => array (array ('uint ' )), 'key2 ' => array ('required ' => true , array ('uint ' )));
264+ $ this ->assertSame ($ expected , A::ofArray (array ('key2 ' => '2 ' ), $ spec ));
265+ }
266+
267+ /**
268+ * @test
269+ * @covers \DominionEnterprises\Filter\Arrays::ofArray
270+ */
271+ public function ofArray_requiredFail ()
272+ {
273+ try {
274+ A::ofArray (array ('key1 ' => '1 ' ), array ('key1 ' => array (array ('uint ' )), 'key2 ' => array ('required ' => true , array ('uint ' ))));
275+ $ this ->fail ();
276+ } catch (\Exception $ e ) {
277+ $ expected = "Field 'key2' was required and not present " ;
278+ $ this ->assertSame ($ expected , $ e ->getMessage ());
279+ }
280+ }
281+
282+ /**
283+ * @test
284+ * @covers \DominionEnterprises\Filter\Arrays::ofArray
285+ */
286+ public function ofArray_unknown ()
287+ {
288+ try {
289+ A::ofArray (array ('key ' => '1 ' ), array ('key2 ' => array (array ('uint ' ))));
290+ $ this ->fail ();
291+ } catch (\Exception $ e ) {
292+ $ expected = "Field 'key' with value '1' is unknown " ;
293+ $ this ->assertSame ($ expected , $ e ->getMessage ());
294+ }
295+ }
233296}
0 commit comments