Strict integer rule

Fixed strict integer rule and added more integer unit tests
This commit is contained in:
Willem Wollebrants 2018-03-29 20:57:51 +02:00 committed by GitHub
commit b6589e85ea
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 3 deletions

View File

@ -251,7 +251,7 @@ class Validator
{
if (isset($params[0]) && (bool) $params[0]){
//strict mode
return preg_match('/^-?([0-9])+$/i', $value);
return preg_match('/^([0-9]|-[1-9]|-?[1-9][0-9]*)$/i', $value);
}
return filter_var($value, \FILTER_VALIDATE_INT) !== false;

View File

@ -203,11 +203,37 @@ class ValidateTest extends BaseTestCase
$v->rule('integer', 'num');
$this->assertTrue($v->validate());
$v = new Validator(array('num' => '+41243'));
$v->rule('integer', 'num', true);
$this->assertFalse($v->validate());
$v = new Validator(array('num' => '-1'));
$v->rule('integer', 'num', true);
$this->assertTrue($v->validate());
$v = new Validator(array('num' => '-0'));
$v->rule('integer', 'num', true);
$this->assertFalse($v->validate());
$v = new Validator(array('num' => '0'));
$v->rule('integer', 'num', true);
$this->assertTrue($v->validate());
$v = new Validator(array('num' => '+0'));
$v->rule('integer', 'num', true);
$this->assertFalse($v->validate());
$v = new Validator(array('num' => '+1'));
$v->rule('integer', 'num', true);
$this->assertFalse($v->validate());
$v = new Validator(array('num' => '0123'));
$v->rule('integer', 'num', true);
$this->assertFalse($v->validate());
$v = new Validator(array('num' => '-0123'));
$v->rule('integer', 'num', true);
$this->assertFalse($v->validate());
}
public function testIntegerInvalid()
@ -216,7 +242,6 @@ class ValidateTest extends BaseTestCase
$v->rule('integer', 'num');
$this->assertFalse($v->validate());
$v = new Validator(array('num' => '--1231'));
$v->rule('integer', 'num');
$this->assertFalse($v->validate());