1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
<?php
declare(strict_types=1);
namespace Doctrine\Tests\Common\Collections;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use function serialize;
use function unserialize;
/**
* Tests for {@see \Doctrine\Common\Collections\ArrayCollection}.
*
* @covers \Doctrine\Common\Collections\ArrayCollection
*/
class ArrayCollectionTest extends ArrayCollectionTestCase
{
/**
* @param mixed[] $elements
*
* @return Collection<mixed>
*/
protected function buildCollection(array $elements = []): Collection
{
return new ArrayCollection($elements);
}
public function testUnserializeEmptyArrayCollection(): void
{
$collection = new SerializableArrayCollection();
$serializeCollection = serialize($collection);
$unserializeCollection = unserialize($serializeCollection);
$this->assertIsArray($unserializeCollection->getValues());
$this->assertCount(0, $unserializeCollection->getValues());
}
}
/**
* @template TKey of array-key
* @template TValue
* @extends ArrayCollection<TKey, TValue>
*/
class SerializableArrayCollection extends ArrayCollection
{
/** @return array<TKey, TValue> */
public function __serialize(): array
{
return $this->toArray();
}
/** @param array<TKey, TValue> $data */
public function __unserialize(array $data): void
{
foreach ($data as $key => $value) {
$this->set($key, $value);
}
}
}
|