@@ -334,6 +334,29 @@ public function testValidateString()
334334 Validator::is ('string ' , $ value )
335335 );
336336 }
337+
338+ // Test string rules
339+ $ str_min_length = ['min_length ' => 1 ];
340+ $ str_max_length = ['max_length ' => 3 ];
341+ $ str_allow_empty = ['allow_empty ' => false ];
342+ $ str_allow_null = ['allow_null ' => true ];
343+ $ str_equals = ['equals ' => 'Hello, World! ' ];
344+ $ str_in = ['in ' => ['hello ' , 'world ' , 'foo ' , 'bar ' ]];
345+ $ str_regex = ['regex ' => "/php/i " ];
346+
347+ $ this ->assertTrue (Validator::isString ('abc ' , array_merge ($ str_min_length , $ str_max_length )));
348+ $ this ->assertFalse (Validator::isString ('' , $ str_min_length ));
349+ $ this ->assertFalse (Validator::isString ('abcd ' , $ str_max_length ));
350+ $ this ->assertTrue (Validator::isString ('' ));
351+ $ this ->assertFalse (Validator::isString ('' , $ str_allow_empty ));
352+ $ this ->assertFalse (Validator::isString (null ));
353+ $ this ->assertTrue (Validator::isString (null , $ str_allow_null ));
354+ $ this ->assertTrue (Validator::isString ('Hello, World! ' , $ str_equals ));
355+ $ this ->assertFalse (Validator::isString ('Hello World! ' , $ str_equals ));
356+ $ this ->assertTrue (Validator::isString ('foo ' , $ str_in ));
357+ $ this ->assertFalse (Validator::isString ('cat ' , $ str_in ));
358+ $ this ->assertTrue (Validator::isString ('PHP is my favorite! ' , $ str_regex ));
359+ $ this ->assertFalse (Validator::isString ('Java is my favorite! ' , $ str_regex ));
337360 }
338361
339362 /**
@@ -361,6 +384,32 @@ public function testValidateInteger()
361384 Validator::is ('integer ' , $ value )
362385 );
363386 }
387+
388+ // Test integer rules
389+ $ int_unsigned = ['unsigned ' => true ];
390+ $ int_gt = ['> ' => 3 ];
391+ $ int_gteq = ['>= ' => 3 ];
392+ $ int_lt = ['< ' => 10 ];
393+ $ int_lteq = ['<= ' => 10 ];
394+ $ int_equals = ['equals ' => 5 ];
395+ $ int_in = ['in ' => [1 , 2 , 3 ]];
396+
397+ $ this ->assertTrue (Validator::isInteger (3 , $ int_unsigned ));
398+ $ this ->assertFalse (Validator::isInteger (-1 , $ int_unsigned ));
399+ $ this ->assertTrue (Validator::isInteger (4 , $ int_gt ));
400+ $ this ->assertFalse (Validator::isInteger (3 , $ int_gt ));
401+ $ this ->assertTrue (Validator::isInteger (3 , $ int_gteq ));
402+ $ this ->assertFalse (Validator::isInteger (2 , $ int_gteq ));
403+ $ this ->assertTrue (Validator::isInteger (3 , $ int_lt ));
404+ $ this ->assertFalse (Validator::isInteger (10 , $ int_lt ));
405+ $ this ->assertTrue (Validator::isInteger (10 , $ int_lteq ));
406+ $ this ->assertFalse (Validator::isInteger (11 , $ int_lteq ));
407+ $ this ->assertTrue (Validator::isInteger (5 , array_merge ($ int_gt , $ int_lt )));
408+ $ this ->assertTrue (Validator::isInteger (5 , array_merge ($ int_gteq , $ int_lteq )));
409+ $ this ->assertTrue (Validator::isInteger (5 , $ int_equals ));
410+ $ this ->assertFalse (Validator::isInteger (1 , $ int_equals ));
411+ $ this ->assertTrue (Validator::isInteger (2 , $ int_in ));
412+ $ this ->assertFalse (Validator::isInteger (4 , $ int_in ));
364413 }
365414
366415 /**
@@ -488,6 +537,21 @@ public function testValidateArray()
488537 Validator::isArray ($ value )
489538 );
490539 }
540+
541+ // Test array rules
542+ $ arr_count = ['count ' => 3 ];
543+ $ arr_min_count = ['min_count ' => 3 ];
544+ $ arr_max_count = ['max_count ' => 3 ];
545+ $ arr_allow_empty = ['allow_empty ' => false ];
546+
547+ $ this ->assertTrue (Validator::isArray ([1 ,2 ,3 ], $ arr_count ));
548+ $ this ->assertFalse (Validator::isArray ([1 ], $ arr_count ));
549+ $ this ->assertTrue (Validator::isArray ([1 ,2 ,3 ,4 ,5 ], $ arr_min_count ));
550+ $ this ->assertFalse (Validator::isArray ([1 ,2 ], $ arr_min_count ));
551+ $ this ->assertTrue (Validator::isArray ([1 ,2 ,3 ], $ arr_max_count ));
552+ $ this ->assertFalse (Validator::isArray ([1 ,2 ,3 ,4 ], $ arr_max_count ));
553+ $ this ->assertTrue (Validator::isArray ([1 ,2 ,3 ], $ arr_allow_empty ));
554+ $ this ->assertFalse (Validator::isArray ([], $ arr_allow_empty ));
491555 }
492556
493557 /**
0 commit comments