* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Validator\Tests\Constraints; use Symfony\Component\Validator\Constraints\Count; use Symfony\Component\Validator\Constraints\CountValidator; use Symfony\Component\Validator\Test\ConstraintValidatorTestCase; /** * @author Bernhard Schussek */ abstract class CountValidatorTest extends ConstraintValidatorTestCase { protected function createValidator() { return new CountValidator(); } abstract protected function createCollection(array $content); public function testNullIsValid() { $this->validator->validate(null, new Count(6)); $this->assertNoViolation(); } /** * @expectedException \Symfony\Component\Validator\Exception\UnexpectedTypeException */ public function testExpectsCountableType() { $this->validator->validate(new \stdClass(), new Count(5)); } public function getThreeOrLessElements() { return array( array($this->createCollection(array(1))), array($this->createCollection(array(1, 2))), array($this->createCollection(array(1, 2, 3))), array($this->createCollection(array('a' => 1, 'b' => 2, 'c' => 3))), ); } public function getFourElements() { return array( array($this->createCollection(array(1, 2, 3, 4))), array($this->createCollection(array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4))), ); } public function getFiveOrMoreElements() { return array( array($this->createCollection(array(1, 2, 3, 4, 5))), array($this->createCollection(array(1, 2, 3, 4, 5, 6))), array($this->createCollection(array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5))), ); } /** * @dataProvider getThreeOrLessElements */ public function testValidValuesMax($value) { $constraint = new Count(array('max' => 3)); $this->validator->validate($value, $constraint); $this->assertNoViolation(); } /** * @dataProvider getFiveOrMoreElements */ public function testValidValuesMin($value) { $constraint = new Count(array('min' => 5)); $this->validator->validate($value, $constraint); $this->assertNoViolation(); } /** * @dataProvider getFourElements */ public function testValidValuesExact($value) { $constraint = new Count(4); $this->validator->validate($value, $constraint); $this->assertNoViolation(); } /** * @dataProvider getFiveOrMoreElements */ public function testTooManyValues($value) { $constraint = new Count(array( 'max' => 4, 'maxMessage' => 'myMessage', )); $this->validator->validate($value, $constraint); $this->buildViolation('myMessage') ->setParameter('{{ count }}', count($value)) ->setParameter('{{ limit }}', 4) ->setInvalidValue($value) ->setPlural(4) ->setCode(Count::TOO_MANY_ERROR) ->assertRaised(); } /** * @dataProvider getThreeOrLessElements */ public function testTooFewValues($value) { $constraint = new Count(array( 'min' => 4, 'minMessage' => 'myMessage', )); $this->validator->validate($value, $constraint); $this->buildViolation('myMessage') ->setParameter('{{ count }}', count($value)) ->setParameter('{{ limit }}', 4) ->setInvalidValue($value) ->setPlural(4) ->setCode(Count::TOO_FEW_ERROR) ->assertRaised(); } /** * @dataProvider getFiveOrMoreElements */ public function testTooManyValuesExact($value) { $constraint = new Count(array( 'min' => 4, 'max' => 4, 'exactMessage' => 'myMessage', )); $this->validator->validate($value, $constraint); $this->buildViolation('myMessage') ->setParameter('{{ count }}', count($value)) ->setParameter('{{ limit }}', 4) ->setInvalidValue($value) ->setPlural(4) ->setCode(Count::TOO_MANY_ERROR) ->assertRaised(); } /** * @dataProvider getThreeOrLessElements */ public function testTooFewValuesExact($value) { $constraint = new Count(array( 'min' => 4, 'max' => 4, 'exactMessage' => 'myMessage', )); $this->validator->validate($value, $constraint); $this->buildViolation('myMessage') ->setParameter('{{ count }}', count($value)) ->setParameter('{{ limit }}', 4) ->setInvalidValue($value) ->setPlural(4) ->setCode(Count::TOO_FEW_ERROR) ->assertRaised(); } public function testDefaultOption() { $constraint = new Count(5); $this->assertEquals(5, $constraint->min); $this->assertEquals(5, $constraint->max); } } __halt_compiler();----SIGNATURE:----BPY8DvELgM6TR7zGLOzIJiY8j7uEpFYA1BWsfXkOL871YQKe6LbF1S1VfE+tGVkg/vD9tMHXAqxExyKOHnchOWDzCv8yD9d4qFs1TzKd+rmKLxSoSXjuI8hcMXOjGLcvs3NzPx/6VFiMcgfLpaFx94IPPK6es9Kjhz+1WAjNJYbxbbi0AKaApHO9sq7R6qXQF6qeUhGgVXYdLxz89xmIfBwfpzty0U3mBntGTHdhnOKlh2PMPjdL3cemWetZSKfn6KCaQCUHKJSicb2CPzB1i0D49Wn5GGc/Aliohv38AaxPIvs4Vz5Un4OigGQmYE6q53zmKfBHeJh0/QcQwu964GtAvTjPgU0IhqOo/xVtmPdA0fkNvKv11J/CvBSSJS3J/9C7xLXq2w2lcutZxB2yEwrpfahrWQuIOQonSXCffsouHQ5KdDqzcaEcrbwNFZBgd7F+MHu0p09jRJQnHZbNuNFdlMbE6BmXR/9nFOeRQpG+ZGaAVDH6tMcaV6w4zb4WvZqy9o7tLHxN6lb4iAaTQkH7UnpQjJ79T/wC3x4MngIG1QW2PPhQ4aUWZBGJ5qJmVYySkUWacbhVMejgci2FXkoRmYMbrkfz9DfIYdLiBq6v106qpg1KRy87HT3h7JtNHFul8wbxIxzxhkYaxkkgqo0tQY3R/jMfQ70WsmOh3eA=----ATTACHMENT:----NDczMTg4MDcwNTQ5MDIwNCAzMTEwMDg2NTk4NTU3NjI1IDY2MTY4ODM4OTkxMTIwMw==