View source
<?php
namespace Symfony\Component\Validator\Tests\Constraints;
use Symfony\Component\Validator\Constraints\Length;
use Symfony\Component\Validator\Constraints\LengthValidator;
use Symfony\Component\Validator\Validation;
class LengthValidatorTest extends AbstractConstraintValidatorTest {
protected function getApiVersion() {
return Validation::API_VERSION_2_5;
}
protected function createValidator() {
return new LengthValidator();
}
public function testNullIsValid() {
$this->validator
->validate(null, new Length(6));
$this
->assertNoViolation();
}
public function testEmptyStringIsValid() {
$this->validator
->validate('', new Length(6));
$this
->assertNoViolation();
}
public function testExpectsStringCompatibleType() {
$this->validator
->validate(new \stdClass(), new Length(5));
}
public function getThreeOrLessCharacters() {
return array(
array(
12,
),
array(
'12',
),
array(
'üü',
),
array(
'éé',
),
array(
123,
),
array(
'123',
),
array(
'üüü',
),
array(
'ééé',
),
);
}
public function getFourCharacters() {
return array(
array(
1234,
),
array(
'1234',
),
array(
'üüüü',
),
array(
'éééé',
),
);
}
public function getFiveOrMoreCharacters() {
return array(
array(
12345,
),
array(
'12345',
),
array(
'üüüüü',
),
array(
'ééééé',
),
array(
123456,
),
array(
'123456',
),
array(
'üüüüüü',
),
array(
'éééééé',
),
);
}
public function getOneCharset() {
if (!function_exists('iconv') && !function_exists('mb_convert_encoding')) {
$this
->markTestSkipped('Mbstring or iconv is required for this test.');
}
return array(
array(
'é',
'utf8',
true,
),
array(
"",
'CP1252',
true,
),
array(
"",
'XXX',
false,
),
array(
"",
'utf8',
false,
),
);
}
public function testValidValuesMin($value) {
$constraint = new Length(array(
'min' => 5,
));
$this->validator
->validate($value, $constraint);
$this
->assertNoViolation();
}
public function testValidValuesMax($value) {
$constraint = new Length(array(
'max' => 3,
));
$this->validator
->validate($value, $constraint);
$this
->assertNoViolation();
}
public function testValidValuesExact($value) {
$constraint = new Length(4);
$this->validator
->validate($value, $constraint);
$this
->assertNoViolation();
}
public function testInvalidValuesMin($value) {
$constraint = new Length(array(
'min' => 4,
'minMessage' => 'myMessage',
));
$this->validator
->validate($value, $constraint);
$this
->buildViolation('myMessage')
->setParameter('{{ value }}', '"' . $value . '"')
->setParameter('{{ limit }}', 4)
->setInvalidValue($value)
->setPlural(4)
->setCode(Length::TOO_SHORT_ERROR)
->assertRaised();
}
public function testInvalidValuesMax($value) {
$constraint = new Length(array(
'max' => 4,
'maxMessage' => 'myMessage',
));
$this->validator
->validate($value, $constraint);
$this
->buildViolation('myMessage')
->setParameter('{{ value }}', '"' . $value . '"')
->setParameter('{{ limit }}', 4)
->setInvalidValue($value)
->setPlural(4)
->setCode(Length::TOO_LONG_ERROR)
->assertRaised();
}
public function testInvalidValuesExactLessThanFour($value) {
$constraint = new Length(array(
'min' => 4,
'max' => 4,
'exactMessage' => 'myMessage',
));
$this->validator
->validate($value, $constraint);
$this
->buildViolation('myMessage')
->setParameter('{{ value }}', '"' . $value . '"')
->setParameter('{{ limit }}', 4)
->setInvalidValue($value)
->setPlural(4)
->setCode(Length::TOO_SHORT_ERROR)
->assertRaised();
}
public function testInvalidValuesExactMoreThanFour($value) {
$constraint = new Length(array(
'min' => 4,
'max' => 4,
'exactMessage' => 'myMessage',
));
$this->validator
->validate($value, $constraint);
$this
->buildViolation('myMessage')
->setParameter('{{ value }}', '"' . $value . '"')
->setParameter('{{ limit }}', 4)
->setInvalidValue($value)
->setPlural(4)
->setCode(Length::TOO_LONG_ERROR)
->assertRaised();
}
public function testOneCharset($value, $charset, $isValid) {
$constraint = new Length(array(
'min' => 1,
'max' => 1,
'charset' => $charset,
'charsetMessage' => 'myMessage',
));
$this->validator
->validate($value, $constraint);
if ($isValid) {
$this
->assertNoViolation();
}
else {
$this
->buildViolation('myMessage')
->setParameter('{{ value }}', '"' . $value . '"')
->setParameter('{{ charset }}', $charset)
->setInvalidValue($value)
->assertRaised();
}
}
public function testConstraintGetDefaultOption() {
$constraint = new Length(5);
$this
->assertEquals(5, $constraint->min);
$this
->assertEquals(5, $constraint->max);
}
}