* * 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\Validator; use PHPUnit\Framework\TestCase; use Symfony\Component\Form\Extension\Validator\ValidatorTypeGuesser; use Symfony\Component\Form\Guess\Guess; use Symfony\Component\Form\Guess\ValueGuess; use Symfony\Component\Validator\Constraints\Email; use Symfony\Component\Validator\Constraints\Length; use Symfony\Component\Validator\Constraints\NotBlank; use Symfony\Component\Validator\Constraints\NotNull; use Symfony\Component\Validator\Constraints\Range; use Symfony\Component\Validator\Constraints\IsTrue; use Symfony\Component\Validator\Constraints\Type; use Symfony\Component\Validator\Mapping\ClassMetadata; /** * @author franek * @author Bernhard Schussek */ class ValidatorTypeGuesserTest extends TestCase { const TEST_CLASS = 'Symfony\Component\Form\Tests\Extension\Validator\ValidatorTypeGuesserTest_TestClass'; const TEST_PROPERTY = 'property'; /** * @var ValidatorTypeGuesser */ private $guesser; /** * @var ClassMetadata */ private $metadata; /** * @var \PHPUnit_Framework_MockObject_MockObject */ private $metadataFactory; protected function setUp() { $this->metadata = new ClassMetadata(self::TEST_CLASS); $this->metadataFactory = $this->getMockBuilder('Symfony\Component\Validator\Mapping\Factory\MetadataFactoryInterface')->getMock(); $this->metadataFactory->expects($this->any()) ->method('getMetadataFor') ->with(self::TEST_CLASS) ->will($this->returnValue($this->metadata)); $this->guesser = new ValidatorTypeGuesser($this->metadataFactory); } public function guessRequiredProvider() { return array( array(new NotNull(), new ValueGuess(true, Guess::HIGH_CONFIDENCE)), array(new NotBlank(), new ValueGuess(true, Guess::HIGH_CONFIDENCE)), array(new IsTrue(), new ValueGuess(true, Guess::HIGH_CONFIDENCE)), array(new Length(10), new ValueGuess(false, Guess::LOW_CONFIDENCE)), array(new Range(array('min' => 1, 'max' => 20)), new ValueGuess(false, Guess::LOW_CONFIDENCE)), ); } /** * @dataProvider guessRequiredProvider */ public function testGuessRequired($constraint, $guess) { // add distracting constraint $this->metadata->addPropertyConstraint(self::TEST_PROPERTY, new Email()); // add constraint under test $this->metadata->addPropertyConstraint(self::TEST_PROPERTY, $constraint); $this->assertEquals($guess, $this->guesser->guessRequired(self::TEST_CLASS, self::TEST_PROPERTY)); } public function testGuessRequiredReturnsFalseForUnmappedProperties() { $this->assertEquals(new ValueGuess(false, Guess::LOW_CONFIDENCE), $this->guesser->guessRequired(self::TEST_CLASS, self::TEST_PROPERTY)); } public function testGuessMaxLengthForConstraintWithMaxValue() { $constraint = new Length(array('max' => '2')); $result = $this->guesser->guessMaxLengthForConstraint($constraint); $this->assertInstanceOf('Symfony\Component\Form\Guess\ValueGuess', $result); $this->assertEquals(2, $result->getValue()); $this->assertEquals(Guess::HIGH_CONFIDENCE, $result->getConfidence()); } public function testGuessMaxLengthForConstraintWithMinValue() { $constraint = new Length(array('min' => '2')); $result = $this->guesser->guessMaxLengthForConstraint($constraint); $this->assertNull($result); } public function maxLengthTypeProvider() { return array( array('double'), array('float'), array('numeric'), array('real'), ); } /** * @dataProvider maxLengthTypeProvider */ public function testGuessMaxLengthForConstraintWithType($type) { $constraint = new Type($type); $result = $this->guesser->guessMaxLengthForConstraint($constraint); $this->assertInstanceOf('Symfony\Component\Form\Guess\ValueGuess', $result); $this->assertNull($result->getValue()); $this->assertEquals(Guess::MEDIUM_CONFIDENCE, $result->getConfidence()); } } class ValidatorTypeGuesserTest_TestClass { private $property; } __halt_compiler();----SIGNATURE:----MOY/HOYmMe+wYdovm9Fp2XvxQJcAVHPDw/0ULbXJ2+FldH4g3gMw2EVwYAnWUhmAnOKCW8WPXMRXxlQfGSaLc04UnQfDct/o5JrI+lzbu4NkNDtvwXVCyAbF/LmyHeL7EjMqcksChAum21XimrOhveJyTnIY70spLCzq83ngJ4qDDc/rUBqxHe/gFx4RX6mPuI1/Bcyzksmz09qv/tGPbBV+kp1TVthIBbmVlBNANbE3HwsSALs0TwUjwqY+0X36DI5jBTh0sYHFj7jckJAs706UQCf6Yo/qkcvqWhWv6Y2sRX0rjEOkxnYiXV0TO1n8BN6WcDpbeJgUvohjk15JvSZ1ustqABB/yPI14AKgNVkeDChMHbP1m7rPQC0v/z/XsPqdVtiAB0OthPt+qUH5XvCKSuQIWo7NSZrCtgGLUG2mawqDeS05RyldyIIJUECLcLYopN/w2VlCX/mpyZy0AxnWGF3zF0gza41r+aXHdQNHhtzAPsY0phgin31kAvPpbVZOONivmVysOPSiVwETtQoPtAbeS4+5SU6ab66kGKsN9lbLPQN7GQmzYut2CNbPBomewnw2hnLMfSetIs1Jyyu4740RlEQgB1RSPOoRgfiO/VsIGHbd1XrGyz09xrc4FBoNSay5chfTwJkrLQv1nXCjlPBh+bx4LxRv3qG1C+E=----ATTACHMENT:----NDczODkyODI3NTI5ODg5MCA5MDQ1ODI0NTQ5Njc0NjY5IDEzNzU3NjY0MzQ3MjA3ODA=