abstract class AbstractComparisonValidatorTestCase in Plug 7
@author Daniel Holmes <daniel@danielholmes.org>
Hierarchy
- class \Symfony\Component\Validator\Tests\Constraints\AbstractConstraintValidatorTest extends \Symfony\Component\Validator\Tests\Constraints\PHPUnit_Framework_TestCase
- class \Symfony\Component\Validator\Tests\Constraints\AbstractComparisonValidatorTestCase
Expanded class hierarchy of AbstractComparisonValidatorTestCase
File
- lib/
Symfony/ validator/ Symfony/ Component/ Validator/ Tests/ Constraints/ AbstractComparisonValidatorTestCase.php, line 35
Namespace
Symfony\Component\Validator\Tests\ConstraintsView source
abstract class AbstractComparisonValidatorTestCase extends AbstractConstraintValidatorTest {
protected static function addPhp5Dot5Comparisons(array $comparisons) {
if (version_compare(PHP_VERSION, '5.5.0-dev', '<')) {
return $comparisons;
}
$result = $comparisons;
// Duplicate all tests involving DateTime objects to be tested with
// DateTimeImmutable objects as well
foreach ($comparisons as $comparison) {
$add = false;
foreach ($comparison as $i => $value) {
if ($value instanceof \DateTime) {
$comparison[$i] = new \DateTimeImmutable($value
->format('Y-m-d H:i:s.u e'), $value
->getTimezone());
$add = true;
}
elseif ('DateTime' === $value) {
$comparison[$i] = 'DateTimeImmutable';
$add = true;
}
}
if ($add) {
$result[] = $comparison;
}
}
return $result;
}
/**
* @expectedException \Symfony\Component\Validator\Exception\ConstraintDefinitionException
*/
public function testThrowsConstraintExceptionIfNoValueOrProperty() {
$comparison = $this
->createConstraint(array());
$this->validator
->validate('some value', $comparison);
}
/**
* @dataProvider provideAllValidComparisons
*
* @param mixed $dirtyValue
* @param mixed $comparisonValue
*/
public function testValidComparisonToValue($dirtyValue, $comparisonValue) {
$constraint = $this
->createConstraint(array(
'value' => $comparisonValue,
));
$this->validator
->validate($dirtyValue, $constraint);
$this
->assertNoViolation();
}
/**
* @return array
*/
public function provideAllValidComparisons() {
// The provider runs before setUp(), so we need to manually fix
// the default timezone
$this
->setDefaultTimezone('UTC');
$comparisons = self::addPhp5Dot5Comparisons($this
->provideValidComparisons());
$this
->restoreDefaultTimezone();
return $comparisons;
}
/**
* @return array
*/
public abstract function provideValidComparisons();
/**
* @dataProvider provideAllInvalidComparisons
*
* @param mixed $dirtyValue
* @param mixed $dirtyValueAsString
* @param mixed $comparedValue
* @param mixed $comparedValueString
* @param string $comparedValueType
*/
public function testInvalidComparisonToValue($dirtyValue, $dirtyValueAsString, $comparedValue, $comparedValueString, $comparedValueType) {
// Conversion of dates to string differs between ICU versions
// Make sure we have the correct version loaded
if ($dirtyValue instanceof \DateTime || $dirtyValue instanceof \DateTimeInterface) {
IntlTestHelper::requireIntl($this);
}
$constraint = $this
->createConstraint(array(
'value' => $comparedValue,
));
$constraint->message = 'Constraint Message';
$this->validator
->validate($dirtyValue, $constraint);
$this
->buildViolation('Constraint Message')
->setParameter('{{ value }}', $dirtyValueAsString)
->setParameter('{{ compared_value }}', $comparedValueString)
->setParameter('{{ compared_value_type }}', $comparedValueType)
->assertRaised();
}
/**
* @return array
*/
public function provideAllInvalidComparisons() {
// The provider runs before setUp(), so we need to manually fix
// the default timezone
$this
->setDefaultTimezone('UTC');
$comparisons = self::addPhp5Dot5Comparisons($this
->provideInvalidComparisons());
$this
->restoreDefaultTimezone();
return $comparisons;
}
/**
* @return array
*/
public abstract function provideInvalidComparisons();
/**
* @param array $options Options for the constraint
*
* @return Constraint
*/
protected abstract function createConstraint(array $options);
}