Skip to content
This repository was archived by the owner on Jun 20, 2018. It is now read-only.

Commit 6e7ed9d

Browse files
committed
Added missing serializers
1 parent ec54421 commit 6e7ed9d

File tree

4 files changed

+59
-3
lines changed

4 files changed

+59
-3
lines changed

src/Map.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
* reference, of if a Map is used with foreach by reference, an exception will
3636
* be thrown.
3737
*/
38-
class Map implements MapInterface, \ArrayAccess
38+
class Map implements MapInterface, \ArrayAccess, \JsonSerializable, \Serializable
3939
{
4040
use MapLikeTrait, SortTrait;
4141

src/Set.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
* is used when adding a new element to a Set (ex. "$c[] =& ..."), or if a Set
3131
* is used with foreach by reference, an exception will be thrown.
3232
*/
33-
class Set implements SetInterface, \ArrayAccess
33+
class Set implements SetInterface, \ArrayAccess, \JsonSerializable, \Serializable
3434
{
3535
use SetLikeTrait;
3636

src/Vector.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
* passed by reference, of if a Vector is used with foreach by reference, an
3131
* exception will be thrown.
3232
*/
33-
class Vector implements VectorInterface, \ArrayAccess
33+
class Vector implements VectorInterface, \ArrayAccess, \JsonSerializable, \Serializable
3434
{
3535
use VectorLikeTrait, SortTrait;
3636

tests/CollectionSerializerTest.php

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<?php
2+
3+
namespace Tests\Collections;
4+
5+
use Collections\Map;
6+
use Collections\Queue;
7+
use Collections\Set;
8+
use Collections\Stack;
9+
use Collections\Vector;
10+
11+
class CollectionSerializerTest extends \PHPUnit_Framework_TestCase
12+
{
13+
/**
14+
* @test
15+
* @dataProvider collectionProvider
16+
* @param $coll
17+
* @param $expectedSerialization
18+
*/
19+
public function is_should_json_serialize_it($coll, $expectedSerialization)
20+
{
21+
$serializedColl = json_encode($coll);
22+
$this->assertJsonStringEqualsJsonString($serializedColl, $expectedSerialization);
23+
}
24+
25+
/**
26+
* @test
27+
* @dataProvider collectionProvider
28+
* @param $coll
29+
*/
30+
public function is_should_php_serialize_it($coll)
31+
{
32+
$serializedColl = serialize($coll);
33+
$this->assertInternalType("string", $serializedColl);
34+
$collection = unserialize($serializedColl);
35+
$this->assertInstanceOf(get_class($coll), $collection);
36+
}
37+
38+
public function collectionProvider()
39+
{
40+
$data = [1, 2, 3, 4];
41+
42+
$queue = new Queue();
43+
$queue->push(1);
44+
45+
$stack = new Stack();
46+
$stack->push(1);
47+
48+
return [
49+
[new Vector($data), '[1,2,3,4]'],
50+
[new Set($data), '[1,2,3,4]'],
51+
[new Map(['test' => 'test']), '{"test": "test"}'],
52+
[$queue, '[1]'],
53+
[$stack, '[1]'],
54+
];
55+
}
56+
}

0 commit comments

Comments
 (0)