Permalink
Browse files

[Validator] Improved test coverage of CollectionValidator and reduced…

… test code duplication
  • Loading branch information...
1 parent 509c7bf commit e6e3da50633ff6e0c5df5d12a3c1a8f7a21dfd44 @webmozart webmozart committed Jan 16, 2012
@@ -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);
+ }
+}
Oops, something went wrong. Retry.

0 comments on commit e6e3da5

Please sign in to comment.