* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Form\Tests\Extension\Core\DataTransformer; use PHPUnit\Framework\TestCase; use Symfony\Component\Form\Extension\Core\DataTransformer\IntegerToLocalizedStringTransformer; use Symfony\Component\Intl\Util\IntlTestHelper; class IntegerToLocalizedStringTransformerTest extends TestCase { protected function setUp() { parent::setUp(); \Locale::setDefault('en'); } public function transformWithRoundingProvider() { return array( // towards positive infinity (1.6 -> 2, -1.6 -> -1) array(1234.5, '1235', IntegerToLocalizedStringTransformer::ROUND_CEILING), array(1234.4, '1235', IntegerToLocalizedStringTransformer::ROUND_CEILING), array(-1234.5, '-1234', IntegerToLocalizedStringTransformer::ROUND_CEILING), array(-1234.4, '-1234', IntegerToLocalizedStringTransformer::ROUND_CEILING), // towards negative infinity (1.6 -> 1, -1.6 -> -2) array(1234.5, '1234', IntegerToLocalizedStringTransformer::ROUND_FLOOR), array(1234.4, '1234', IntegerToLocalizedStringTransformer::ROUND_FLOOR), array(-1234.5, '-1235', IntegerToLocalizedStringTransformer::ROUND_FLOOR), array(-1234.4, '-1235', IntegerToLocalizedStringTransformer::ROUND_FLOOR), // away from zero (1.6 -> 2, -1.6 -> 2) array(1234.5, '1235', IntegerToLocalizedStringTransformer::ROUND_UP), array(1234.4, '1235', IntegerToLocalizedStringTransformer::ROUND_UP), array(-1234.5, '-1235', IntegerToLocalizedStringTransformer::ROUND_UP), array(-1234.4, '-1235', IntegerToLocalizedStringTransformer::ROUND_UP), // towards zero (1.6 -> 1, -1.6 -> -1) array(1234.5, '1234', IntegerToLocalizedStringTransformer::ROUND_DOWN), array(1234.4, '1234', IntegerToLocalizedStringTransformer::ROUND_DOWN), array(-1234.5, '-1234', IntegerToLocalizedStringTransformer::ROUND_DOWN), array(-1234.4, '-1234', IntegerToLocalizedStringTransformer::ROUND_DOWN), // round halves (.5) to the next even number array(1234.6, '1235', IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN), array(1234.5, '1234', IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN), array(1234.4, '1234', IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN), array(1233.5, '1234', IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN), array(1232.5, '1232', IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN), array(-1234.6, '-1235', IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN), array(-1234.5, '-1234', IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN), array(-1234.4, '-1234', IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN), array(-1233.5, '-1234', IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN), array(-1232.5, '-1232', IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN), // round halves (.5) away from zero array(1234.6, '1235', IntegerToLocalizedStringTransformer::ROUND_HALF_UP), array(1234.5, '1235', IntegerToLocalizedStringTransformer::ROUND_HALF_UP), array(1234.4, '1234', IntegerToLocalizedStringTransformer::ROUND_HALF_UP), array(-1234.6, '-1235', IntegerToLocalizedStringTransformer::ROUND_HALF_UP), array(-1234.5, '-1235', IntegerToLocalizedStringTransformer::ROUND_HALF_UP), array(-1234.4, '-1234', IntegerToLocalizedStringTransformer::ROUND_HALF_UP), // round halves (.5) towards zero array(1234.6, '1235', IntegerToLocalizedStringTransformer::ROUND_HALF_DOWN), array(1234.5, '1234', IntegerToLocalizedStringTransformer::ROUND_HALF_DOWN), array(1234.4, '1234', IntegerToLocalizedStringTransformer::ROUND_HALF_DOWN), array(-1234.6, '-1235', IntegerToLocalizedStringTransformer::ROUND_HALF_DOWN), array(-1234.5, '-1234', IntegerToLocalizedStringTransformer::ROUND_HALF_DOWN), array(-1234.4, '-1234', IntegerToLocalizedStringTransformer::ROUND_HALF_DOWN), ); } /** * @dataProvider transformWithRoundingProvider */ public function testTransformWithRounding($input, $output, $roundingMode) { $transformer = new IntegerToLocalizedStringTransformer(null, null, $roundingMode); $this->assertEquals($output, $transformer->transform($input)); } public function testReverseTransform() { // Since we test against "de_AT", we need the full implementation IntlTestHelper::requireFullIntl($this, false); \Locale::setDefault('de_AT'); $transformer = new IntegerToLocalizedStringTransformer(); $this->assertEquals(1, $transformer->reverseTransform('1')); $this->assertEquals(1, $transformer->reverseTransform('1,5')); $this->assertEquals(1234, $transformer->reverseTransform('1234,5')); $this->assertEquals(12345, $transformer->reverseTransform('12345,912')); } public function testReverseTransformEmpty() { $transformer = new IntegerToLocalizedStringTransformer(); $this->assertNull($transformer->reverseTransform('')); } public function testReverseTransformWithGrouping() { // Since we test against "de_DE", we need the full implementation IntlTestHelper::requireFullIntl($this, false); \Locale::setDefault('de_DE'); $transformer = new IntegerToLocalizedStringTransformer(null, true); $this->assertEquals(1234, $transformer->reverseTransform('1.234,5')); $this->assertEquals(12345, $transformer->reverseTransform('12.345,912')); $this->assertEquals(1234, $transformer->reverseTransform('1234,5')); $this->assertEquals(12345, $transformer->reverseTransform('12345,912')); } public function reverseTransformWithRoundingProvider() { return array( // towards positive infinity (1.6 -> 2, -1.6 -> -1) array('1234,5', 1235, IntegerToLocalizedStringTransformer::ROUND_CEILING), array('1234,4', 1235, IntegerToLocalizedStringTransformer::ROUND_CEILING), array('-1234,5', -1234, IntegerToLocalizedStringTransformer::ROUND_CEILING), array('-1234,4', -1234, IntegerToLocalizedStringTransformer::ROUND_CEILING), // towards negative infinity (1.6 -> 1, -1.6 -> -2) array('1234,5', 1234, IntegerToLocalizedStringTransformer::ROUND_FLOOR), array('1234,4', 1234, IntegerToLocalizedStringTransformer::ROUND_FLOOR), array('-1234,5', -1235, IntegerToLocalizedStringTransformer::ROUND_FLOOR), array('-1234,4', -1235, IntegerToLocalizedStringTransformer::ROUND_FLOOR), // away from zero (1.6 -> 2, -1.6 -> 2) array('1234,5', 1235, IntegerToLocalizedStringTransformer::ROUND_UP), array('1234,4', 1235, IntegerToLocalizedStringTransformer::ROUND_UP), array('-1234,5', -1235, IntegerToLocalizedStringTransformer::ROUND_UP), array('-1234,4', -1235, IntegerToLocalizedStringTransformer::ROUND_UP), // towards zero (1.6 -> 1, -1.6 -> -1) array('1234,5', 1234, IntegerToLocalizedStringTransformer::ROUND_DOWN), array('1234,4', 1234, IntegerToLocalizedStringTransformer::ROUND_DOWN), array('-1234,5', -1234, IntegerToLocalizedStringTransformer::ROUND_DOWN), array('-1234,4', -1234, IntegerToLocalizedStringTransformer::ROUND_DOWN), // round halves (.5) to the next even number array('1234,6', 1235, IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN), array('1234,5', 1234, IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN), array('1234,4', 1234, IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN), array('1233,5', 1234, IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN), array('1232,5', 1232, IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN), array('-1234,6', -1235, IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN), array('-1234,5', -1234, IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN), array('-1234,4', -1234, IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN), array('-1233,5', -1234, IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN), array('-1232,5', -1232, IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN), // round halves (.5) away from zero array('1234,6', 1235, IntegerToLocalizedStringTransformer::ROUND_HALF_UP), array('1234,5', 1235, IntegerToLocalizedStringTransformer::ROUND_HALF_UP), array('1234,4', 1234, IntegerToLocalizedStringTransformer::ROUND_HALF_UP), array('-1234,6', -1235, IntegerToLocalizedStringTransformer::ROUND_HALF_UP), array('-1234,5', -1235, IntegerToLocalizedStringTransformer::ROUND_HALF_UP), array('-1234,4', -1234, IntegerToLocalizedStringTransformer::ROUND_HALF_UP), // round halves (.5) towards zero array('1234,6', 1235, IntegerToLocalizedStringTransformer::ROUND_HALF_DOWN), array('1234,5', 1234, IntegerToLocalizedStringTransformer::ROUND_HALF_DOWN), array('1234,4', 1234, IntegerToLocalizedStringTransformer::ROUND_HALF_DOWN), array('-1234,6', -1235, IntegerToLocalizedStringTransformer::ROUND_HALF_DOWN), array('-1234,5', -1234, IntegerToLocalizedStringTransformer::ROUND_HALF_DOWN), array('-1234,4', -1234, IntegerToLocalizedStringTransformer::ROUND_HALF_DOWN), ); } /** * @dataProvider reverseTransformWithRoundingProvider */ public function testReverseTransformWithRounding($input, $output, $roundingMode) { $transformer = new IntegerToLocalizedStringTransformer(null, null, $roundingMode); $this->assertEquals($output, $transformer->reverseTransform($input)); } /** * @expectedException \Symfony\Component\Form\Exception\TransformationFailedException */ public function testReverseTransformExpectsString() { $transformer = new IntegerToLocalizedStringTransformer(); $transformer->reverseTransform(1); } /** * @expectedException \Symfony\Component\Form\Exception\TransformationFailedException */ public function testReverseTransformExpectsValidNumber() { $transformer = new IntegerToLocalizedStringTransformer(); $transformer->reverseTransform('foo'); } /** * @expectedException \Symfony\Component\Form\Exception\TransformationFailedException */ public function testReverseTransformDisallowsNaN() { $transformer = new IntegerToLocalizedStringTransformer(); $transformer->reverseTransform('NaN'); } /** * @expectedException \Symfony\Component\Form\Exception\TransformationFailedException */ public function testReverseTransformDisallowsNaN2() { $transformer = new IntegerToLocalizedStringTransformer(); $transformer->reverseTransform('nan'); } /** * @expectedException \Symfony\Component\Form\Exception\TransformationFailedException */ public function testReverseTransformDisallowsInfinity() { $transformer = new IntegerToLocalizedStringTransformer(); $transformer->reverseTransform('∞'); } /** * @expectedException \Symfony\Component\Form\Exception\TransformationFailedException */ public function testReverseTransformDisallowsNegativeInfinity() { $transformer = new IntegerToLocalizedStringTransformer(); $transformer->reverseTransform('-∞'); } } __halt_compiler();----SIGNATURE:----LkHmsIGq/V9HT7/JvV8qo3bdVZ7rfFaavNTmrWoTndcccdj/JIGfBxEuibVU67CTdxSFLuFgKtJsAyk6Uxg2RlyoXz7BaHxz1FEKqGZQRuTumBpB3BPcyRh9So4FrD8etgYO7OS7/9UQot+5GdQ7Zx7Gw+Sh9t/NMbdhgIkHS1L2+pIHpqbYcwbrr3pRvBONglt3JPdWFoQSC0oNT4aMC6i6hem0zpbRrf9MTwQP5zkk+rxvLK0lpkgOBV9zp9KHqhyvPu8o5Nu3/b2AD5JcsPqhiNRl31paB59H7V1iQZn+Cm/84JmTHkrJ1yKL8ErD2oMrpSZEhmIfdv2qbZ7b8qrepHoWigR0b9I92N30BBI0fCgjUfDBw6mcIzf3UCvkUuGiS9qH996Ll1Zds6Sqbgr+eNxPXX8fWJd6so2QYKc8d/tTyGIB1rKM1mX3iRGTM7B0lLB7k+SgGaQA4QOxs9fPOlmdkcaKLDhXbUJ221+UzW4rvjIV4vaP7hZ3Pq2W8boRqnya7Z4XqSglb50x9/nUc5GyEw9pRhYiWrrT/diDWynvhmuejgr85rf7tV/OWNYwP4M4Ml011XErXYM0Z2Qo2tGYVYEx/iquIwWXaI+Xq6McTUsF8/RM94RBV9FoNH8m9Js6SrLIHxK37DnGwzYJ1cuy9iGzi2k0qlSDsYY=----ATTACHMENT:----OTc1ODUwMzgxNTg2OTI4OCA0NDcwMzg4ODU5ODQxMjc3IDMzOTUyOTMxMjAxMjQ4OTI=