Skip to content

Commit

Permalink
[Validator] Improved test coverage of CollectionValidator and reduced…
Browse files Browse the repository at this point in the history
… test code duplication
  • Loading branch information
webmozart committed Jan 16, 2012
1 parent 509c7bf commit e6e3da5
Show file tree
Hide file tree
Showing 4 changed files with 192 additions and 215 deletions.
@@ -0,0 +1,20 @@
<?php

/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace Symfony\Tests\Component\Validator\Constraints;

class CollectionValidatorArrayObjectTest extends CollectionValidatorTest
{
public function prepareTestData(array $contents)
{
return new \ArrayObject($contents);
}
}
@@ -0,0 +1,20 @@
<?php

/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace Symfony\Tests\Component\Validator\Constraints;

class CollectionValidatorArrayTest extends CollectionValidatorTest
{
public function prepareTestData(array $contents)
{
return $contents;
}
}
@@ -0,0 +1,80 @@
<?php

/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace Symfony\Tests\Component\Validator\Constraints;

/**
* This class is a hand written simplified version of PHP native `ArrayObject`
* class, to show that it behaves different than PHP native implementation.
*/
class CustomArrayObject implements \ArrayAccess, \IteratorAggregate, \Countable, \Serializable
{
private $array;

public function __construct(array $array = null)
{
$this->array = (array) ($array ?: array());
}

public function offsetExists($offset)
{
return array_key_exists($offset, $this->array);
}

public function offsetGet($offset)
{
return $this->array[$offset];
}

public function offsetSet($offset, $value)
{
if (null === $offset) {
$this->array[] = $value;
} else {
$this->array[$offset] = $value;
}
}

public function offsetUnset($offset)
{
if (array_key_exists($offset, $this->array)) {
unset($this->array[$offset]);
}
}

public function getIterator()
{
return new \ArrayIterator($this->array);
}

public function count()
{
return count($this->array);
}

public function serialize()
{
return serialize($this->array);
}

public function unserialize($serialized)
{
$this->array = (array) unserialize((string) $serialized);
}
}

class CollectionValidatorCustomArrayObjectTest extends CollectionValidatorTest
{
public function prepareTestData(array $contents)
{
return new CustomArrayObject($contents);
}
}

0 comments on commit e6e3da5

Please sign in to comment.