diff --git a/src/Symfony/Component/Validator/Constraints/ImageValidator.php b/src/Symfony/Component/Validator/Constraints/ImageValidator.php index 902ad3bdf4..007f9daa9a 100644 --- a/src/Symfony/Component/Validator/Constraints/ImageValidator.php +++ b/src/Symfony/Component/Validator/Constraints/ImageValidator.php @@ -62,7 +62,7 @@ class ImageValidator extends FileValidator if ($width < $constraint->minWidth) { $this->context->addViolation($constraint->minWidthMessage, array( '{{ width }}' => $width, - '{{ min_width }}' => $constraint->minWidth + '{{ min_width }}' => $constraint->minWidth, )); return; @@ -77,7 +77,7 @@ class ImageValidator extends FileValidator if ($width > $constraint->maxWidth) { $this->context->addViolation($constraint->maxWidthMessage, array( '{{ width }}' => $width, - '{{ max_width }}' => $constraint->maxWidth + '{{ max_width }}' => $constraint->maxWidth, )); return; @@ -92,7 +92,7 @@ class ImageValidator extends FileValidator if ($height < $constraint->minHeight) { $this->context->addViolation($constraint->minHeightMessage, array( '{{ height }}' => $height, - '{{ min_height }}' => $constraint->minHeight + '{{ min_height }}' => $constraint->minHeight, )); return; @@ -107,12 +107,12 @@ class ImageValidator extends FileValidator if ($height > $constraint->maxHeight) { $this->context->addViolation($constraint->maxHeightMessage, array( '{{ height }}' => $height, - '{{ max_height }}' => $constraint->maxHeight + '{{ max_height }}' => $constraint->maxHeight, )); } } - $ratio = $width / $height; + $ratio = round($width / $height, 2); if (null !== $constraint->minRatio) { if (!is_numeric((string) $constraint->minRatio)) { @@ -122,7 +122,7 @@ class ImageValidator extends FileValidator if ($ratio < $constraint->minRatio) { $this->context->addViolation($constraint->minRatioMessage, array( '{{ ratio }}' => $ratio, - '{{ min_ratio }}' => $constraint->minRatio + '{{ min_ratio }}' => $constraint->minRatio, )); } } @@ -135,7 +135,7 @@ class ImageValidator extends FileValidator if ($ratio > $constraint->maxRatio) { $this->context->addViolation($constraint->maxRatioMessage, array( '{{ ratio }}' => $ratio, - '{{ max_ratio }}' => $constraint->maxRatio + '{{ max_ratio }}' => $constraint->maxRatio, )); } } @@ -143,21 +143,21 @@ class ImageValidator extends FileValidator if (!$constraint->allowSquare && $width == $height) { $this->context->addViolation($constraint->allowSquareMessage, array( '{{ width }}' => $width, - '{{ height }}' => $height + '{{ height }}' => $height, )); } if (!$constraint->allowLandscape && $width > $height) { $this->context->addViolation($constraint->allowLandscapeMessage, array( '{{ width }}' => $width, - '{{ height }}' => $height + '{{ height }}' => $height, )); } if (!$constraint->allowPortrait && $width < $height) { $this->context->addViolation($constraint->allowPortraitMessage, array( '{{ width }}' => $width, - '{{ height }}' => $height + '{{ height }}' => $height, )); } diff --git a/src/Symfony/Component/Validator/Tests/Constraints/Fixtures/test_4by3.gif b/src/Symfony/Component/Validator/Tests/Constraints/Fixtures/test_4by3.gif new file mode 100644 index 0000000000..64dd3ff96a Binary files /dev/null and b/src/Symfony/Component/Validator/Tests/Constraints/Fixtures/test_4by3.gif differ diff --git a/src/Symfony/Component/Validator/Tests/Constraints/ImageValidatorTest.php b/src/Symfony/Component/Validator/Tests/Constraints/ImageValidatorTest.php index c01ba0a6be..6308669ea0 100644 --- a/src/Symfony/Component/Validator/Tests/Constraints/ImageValidatorTest.php +++ b/src/Symfony/Component/Validator/Tests/Constraints/ImageValidatorTest.php @@ -13,16 +13,21 @@ namespace Symfony\Component\Validator\Tests\Constraints; use Symfony\Component\Validator\Constraints\Image; use Symfony\Component\Validator\Constraints\ImageValidator; -use Symfony\Component\Validator\Validation; class ImageValidatorTest extends AbstractConstraintValidatorTest { protected $context; + + /** + * @var ImageValidator + */ protected $validator; + protected $path; protected $image; protected $imageLandscape; protected $imagePortrait; + protected $image4By3; protected function createValidator() { @@ -36,6 +41,7 @@ class ImageValidatorTest extends AbstractConstraintValidatorTest $this->image = __DIR__.'/Fixtures/test.gif'; $this->imageLandscape = __DIR__.'/Fixtures/test_landscape.gif'; $this->imagePortrait = __DIR__.'/Fixtures/test_portrait.gif'; + $this->image4By3 = __DIR__.'/Fixtures/test_4by3.gif'; } public function testNullIsValid() @@ -211,6 +217,17 @@ class ImageValidatorTest extends AbstractConstraintValidatorTest )); } + public function testMaxRatioUsesTwoDecimalsOnly() + { + $constraint = new Image(array( + 'maxRatio' => 1.33, + )); + + $this->validator->validate($this->image4By3, $constraint); + + $this->assertNoViolation(); + } + /** * @expectedException \Symfony\Component\Validator\Exception\ConstraintDefinitionException */