4 * This file is part of the Symfony package.
6 * (c) Fabien Potencier <fabien@symfony.com>
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
12 namespace Symfony\Component\Validator\Tests\Constraints;
14 use PHPUnit\Framework\TestCase;
15 use Symfony\Component\Validator\Constraints\File;
16 use Symfony\Component\Validator\Exception\ConstraintDefinitionException;
18 class FileTest extends TestCase
21 * @param mixed $maxSize
23 * @param bool $binaryFormat
24 * @dataProvider provideValidSizes
26 public function testMaxSize($maxSize, $bytes, $binaryFormat)
28 $file = new File(array('maxSize' => $maxSize));
30 $this->assertSame($bytes, $file->maxSize);
31 $this->assertSame($binaryFormat, $file->binaryFormat);
35 * @dataProvider provideValidSizes
37 * @param int|string $maxSize
39 * @param string $binaryFormat
41 public function testMaxSizeCanBeSetAfterInitialization($maxSize, $bytes, $binaryFormat)
44 $file->maxSize = $maxSize;
46 $this->assertSame($bytes, $file->maxSize);
47 $this->assertSame($binaryFormat, $file->binaryFormat);
51 * @dataProvider provideInvalidSizes
52 * @expectedException \Symfony\Component\Validator\Exception\ConstraintDefinitionException
54 * @param int|string $maxSize
56 public function testInvalidValueForMaxSizeThrowsExceptionAfterInitialization($maxSize)
58 $file = new File(array('maxSize' => 1000));
59 $file->maxSize = $maxSize;
63 * @dataProvider provideInvalidSizes
65 * @param int|string $maxSize
67 public function testMaxSizeCannotBeSetToInvalidValueAfterInitialization($maxSize)
69 $file = new File(array('maxSize' => 1000));
72 $file->maxSize = $maxSize;
73 } catch (ConstraintDefinitionException $e) {
76 $this->assertSame(1000, $file->maxSize);
80 * @param mixed $maxSize
81 * @dataProvider provideInValidSizes
82 * @expectedException \Symfony\Component\Validator\Exception\ConstraintDefinitionException
84 public function testInvalidMaxSize($maxSize)
86 new File(array('maxSize' => $maxSize));
92 public function provideValidSizes()
95 array('500', 500, false),
96 array(12300, 12300, false),
97 array('1ki', 1024, true),
98 array('1KI', 1024, true),
99 array('2k', 2000, false),
100 array('2K', 2000, false),
101 array('1mi', 1048576, true),
102 array('1MI', 1048576, true),
103 array('3m', 3000000, false),
104 array('3M', 3000000, false),
111 public function provideInvalidSizes()
124 * @param mixed $maxSize
125 * @param bool $guessedFormat
126 * @param bool $binaryFormat
127 * @dataProvider provideFormats
129 public function testBinaryFormat($maxSize, $guessedFormat, $binaryFormat)
131 $file = new File(array('maxSize' => $maxSize, 'binaryFormat' => $guessedFormat));
133 $this->assertSame($binaryFormat, $file->binaryFormat);
139 public function provideFormats()
142 array(100, null, false),
143 array(100, true, true),
144 array(100, false, false),
145 array('100K', null, false),
146 array('100K', true, true),
147 array('100K', false, false),
148 array('100Ki', null, true),
149 array('100Ki', true, true),
150 array('100Ki', false, false),