From 28d954817b61bb5aae4fa350820e8786c712793c Mon Sep 17 00:00:00 2001 From: Willem Wollebrants Date: Tue, 21 Feb 2017 21:11:14 +0100 Subject: [PATCH 1/2] Use an optional parameter to make validateInteger more strict --- src/Valitron/Validator.php | 10 ++++++++-- tests/Valitron/ValidateTest.php | 30 ++++++++++++++++++++++-------- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/src/Valitron/Validator.php b/src/Valitron/Validator.php index f4fd6f2..5fc5c84 100644 --- a/src/Valitron/Validator.php +++ b/src/Valitron/Validator.php @@ -233,11 +233,17 @@ class Validator * * @param string $field * @param mixed $value + * @param array $params * @return bool */ - protected function validateInteger($field, $value) + protected function validateInteger($field, $value, $params) { - return preg_match('/^-?([0-9])+$/i', $value); + if (isset($params[0]) && (bool) $params[0]){ + //strict mode + return preg_match('/^-?([0-9])+$/i', $value); + } + + return filter_var($value, \FILTER_VALIDATE_INT) !== false; } /** diff --git a/tests/Valitron/ValidateTest.php b/tests/Valitron/ValidateTest.php index e5fe053..8ac6b2d 100644 --- a/tests/Valitron/ValidateTest.php +++ b/tests/Valitron/ValidateTest.php @@ -116,19 +116,33 @@ class ValidateTest extends BaseTestCase $this->assertTrue($v->validate()); } + public function testIntegerStrict(){ + + $v = new Validator(array('num' => ' 41243')); + $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' => '+41243')); + $v->rule('integer', 'num'); + $this->assertTrue($v->validate()); + + + $v = new Validator(array('num' => '+41243')); + $v->rule('integer', 'num', true); + $this->assertFalse($v->validate()); + + } + public function testIntegerInvalid() { $v = new Validator(array('num' => '42.341569')); $v->rule('integer', 'num'); $this->assertFalse($v->validate()); - $v = new Validator(array('num' => ' 41243')); - $v->rule('integer', 'num'); - $this->assertFalse($v->validate()); - - $v = new Validator(array('num' => '+1231')); - $v->rule('integer', 'num'); - $this->assertFalse($v->validate()); $v = new Validator(array('num' => '--1231')); $v->rule('integer', 'num'); @@ -142,7 +156,7 @@ class ValidateTest extends BaseTestCase public function testIntegerWithMaxValidation() { $v = new Validator(array('num' => ' 4212341569')); - $v->rule('integer', 'num'); + $v->rule('integer', 'num', true); $v->rule('max', 'num', 1000); $this->assertFalse($v->validate()); } From 1942e53a5c1e9bfe213cda3b102bef4fd0460e33 Mon Sep 17 00:00:00 2001 From: Willem Wollebrants Date: Tue, 21 Feb 2017 21:12:27 +0100 Subject: [PATCH 2/2] Remove unneeded test testIntegerWithMaxValidation --- tests/Valitron/ValidateTest.php | 8 -------- 1 file changed, 8 deletions(-) diff --git a/tests/Valitron/ValidateTest.php b/tests/Valitron/ValidateTest.php index 8ac6b2d..490424e 100644 --- a/tests/Valitron/ValidateTest.php +++ b/tests/Valitron/ValidateTest.php @@ -153,14 +153,6 @@ class ValidateTest extends BaseTestCase $this->assertFalse($v->validate()); } - public function testIntegerWithMaxValidation() - { - $v = new Validator(array('num' => ' 4212341569')); - $v->rule('integer', 'num', true); - $v->rule('max', 'num', 1000); - $this->assertFalse($v->validate()); - } - public function testLengthValid() { $v = new Validator(array('str' => 'happy'));