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)
{
return (int) $value >= $params[0];
return !(bccomp($params[0], $value, 14) == 1);
}
/**
@ -238,7 +238,7 @@ class Validator
*/
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->rule('min', 'num', 2);
$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()
@ -161,11 +176,33 @@ class ValidateTest extends BaseTestCase
$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()
{
$v = new Validator(array('num' => 5));
$v->rule('max', 'num', 6);
$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()
@ -175,6 +212,13 @@ class ValidateTest extends BaseTestCase
$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()
{
$v = new Validator(array('color' => 'green'));