Merge pull request #61 from JustinHook/master

Fixed issue with validating decimals with Min/Max rules
This commit is contained in:
Vance Lucas 2014-04-03 15:29:27 -05:00
commit b0d65877b1
2 changed files with 46 additions and 2 deletions

View File

@ -224,7 +224,7 @@ class Validator
*/ */
protected function validateMin($field, $value, $params) protected function validateMin($field, $value, $params)
{ {
return (int) $value >= $params[0]; return !(bccomp($params[0], $value, 14) == 1);
} }
/** /**
@ -238,7 +238,7 @@ class Validator
*/ */
protected function validateMax($field, $value, $params) protected function validateMax($field, $value, $params)
{ {
return (int) $value <= $params[0]; return !(bccomp($value, $params[0], 14) == 1);
} }
/** /**

View File

@ -152,6 +152,21 @@ class ValidateTest extends BaseTestCase
$v = new Validator(array('num' => 5)); $v = new Validator(array('num' => 5));
$v->rule('min', 'num', 2); $v->rule('min', 'num', 2);
$this->assertTrue($v->validate()); $this->assertTrue($v->validate());
$v = new Validator(array('num' => 5));
$v->rule('min', 'num', 5);
$this->assertTrue($v->validate());
}
public function testMinValidFloat()
{
$v = new Validator(array('num' => 0.9));
$v->rule('min', 'num', 0.5);
$this->assertTrue($v->validate());
$v = new Validator(array('num' => 1 - 0.81));
$v->rule('min', 'num', 0.19);
$this->assertTrue($v->validate());
} }
public function testMinInvalid() public function testMinInvalid()
@ -161,11 +176,33 @@ class ValidateTest extends BaseTestCase
$this->assertFalse($v->validate()); $this->assertFalse($v->validate());
} }
public function testMinInvalidFloat()
{
$v = new Validator(array('num' => 0.5));
$v->rule('min', 'num', 0.9);
$this->assertFalse($v->validate());
}
public function testMaxValid() public function testMaxValid()
{ {
$v = new Validator(array('num' => 5)); $v = new Validator(array('num' => 5));
$v->rule('max', 'num', 6); $v->rule('max', 'num', 6);
$this->assertTrue($v->validate()); $this->assertTrue($v->validate());
$v = new Validator(array('num' => 5));
$v->rule('max', 'num', 5);
$this->assertTrue($v->validate());
}
public function testMaxValidFloat()
{
$v = new Validator(array('num' => 0.4));
$v->rule('max', 'num', 0.5);
$this->assertTrue($v->validate());
$v = new Validator(array('num' => 1 - 0.83));
$v->rule('max', 'num', 0.17);
$this->assertTrue($v->validate());
} }
public function testMaxInvalid() public function testMaxInvalid()
@ -175,6 +212,13 @@ class ValidateTest extends BaseTestCase
$this->assertFalse($v->validate()); $this->assertFalse($v->validate());
} }
public function testMaxInvalidFloat()
{
$v = new Validator(array('num' => 0.9));
$v->rule('max', 'num', 0.5);
$this->assertFalse($v->validate());
}
public function testInValid() public function testInValid()
{ {
$v = new Validator(array('color' => 'green')); $v = new Validator(array('color' => 'green'));