diff --git a/lib/Doctrine/Validator.php b/lib/Doctrine/Validator.php index ffb9412fb..afd1709ac 100644 --- a/lib/Doctrine/Validator.php +++ b/lib/Doctrine/Validator.php @@ -171,7 +171,7 @@ public static function isValidType($var, $type) case 'float': case 'double': case 'decimal': - return (string) $var === (string) (float) $var; + return (string) $var == (string) (float) $var; case 'integer': return (string) $var === (string)round((float) $var); case 'string': diff --git a/tests/ValidatorTestCase.php b/tests/ValidatorTestCase.php index 401588afa..92943fa29 100644 --- a/tests/ValidatorTestCase.php +++ b/tests/ValidatorTestCase.php @@ -80,6 +80,13 @@ public function testIsValidType() $this->assertFalse(Doctrine_Validator::isValidType($var, 'array')); $this->assertFalse(Doctrine_Validator::isValidType($var, 'object')); + $var = '123.00'; + $this->assertTrue(Doctrine_Validator::isValidType($var, 'string')); + $this->assertFalse(Doctrine_Validator::isValidType($var, 'integer')); + $this->assertTrue(Doctrine_Validator::isValidType($var, 'float')); + $this->assertFalse(Doctrine_Validator::isValidType($var, 'array')); + $this->assertFalse(Doctrine_Validator::isValidType($var, 'object')); + $var = ''; $this->assertTrue(Doctrine_Validator::isValidType($var, 'string')); $this->assertFalse(Doctrine_Validator::isValidType($var, 'integer'));