Fixed strict integer rule and added more integer unit tests

This commit is contained in:
Dennis Meckel 2017-10-13 19:39:59 +02:00
parent 20a9c2d604
commit eb436a382f
2 changed files with 28 additions and 3 deletions

View File

@ -246,7 +246,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

@ -143,11 +143,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()
@ -156,7 +182,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());