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]){ if (isset($params[0]) && (bool) $params[0]){
//strict mode //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; return filter_var($value, \FILTER_VALIDATE_INT) !== false;

View File

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