[Form] NumberToLocalizedStringTransformer should return floats when possible

This commit is contained in:
Nicolas Grekas 2016-03-30 09:21:26 +02:00
parent 8110612a46
commit f5ed09c64c
2 changed files with 12 additions and 1 deletions

View File

@ -140,6 +140,10 @@ class NumberToLocalizedStringTransformer implements DataTransformerInterface
throw new TransformationFailedException('I don\'t have a clear idea what infinity looks like');
}
if (is_int($result) && $result === (int) $float = (float) $result) {
$result = $float;
}
if (function_exists('mb_detect_encoding') && false !== $encoding = mb_detect_encoding($value, null, true)) {
$length = mb_strlen($value, $encoding);
$remainder = mb_substr($value, $position, $length, $encoding);

View File

@ -434,10 +434,17 @@ class NumberToLocalizedStringTransformerTest extends \PHPUnit_Framework_TestCase
$transformer->reverseTransform("12\xc2\xa0345,678foo");
}
public function testReverseTransformBigint()
public function testReverseTransformBigInt()
{
$transformer = new NumberToLocalizedStringTransformer(null, true);
$this->assertEquals(PHP_INT_MAX - 1, (int) $transformer->reverseTransform((string) (PHP_INT_MAX - 1)));
}
public function testReverseTransformSmallInt()
{
$transformer = new NumberToLocalizedStringTransformer(null, true);
$this->assertSame(1.0, $transformer->reverseTransform('1'));
}
}