@@ -27,6 +27,16 @@ public function testAdd()
2727 $ this ->assertSame (['a ' ], $ set ->values ());
2828 }
2929
30+ public function testAddViaArrayAccess ()
31+ {
32+ $ set = new Set ();
33+ $ set [] = 'a ' ;
34+ $ this ->assertSame (['a ' ], $ set ->values ());
35+
36+ $ set [] ='a ' ;
37+ $ this ->assertSame (['a ' ], $ set ->values ());
38+ }
39+
3040 public function testDelete ()
3141 {
3242 $ set = new Set ();
@@ -70,7 +80,7 @@ public function testDiffOnSameValues()
7080 $ set2 ->add (2 );
7181
7282 $ expected = 0 ;
73- $ result = $ set ->diff ($ set2 )->size ;
83+ $ result = $ set ->difference ($ set2 )->size ;
7484
7585 $ this ->assertSame ($ expected , $ result );
7686 }
@@ -80,7 +90,7 @@ public function testDiffOnDifferentValues()
8090 $ set = new Set (1 , 2 );
8191 $ set2 = new Set (3 , 4 );
8292
83- $ result = $ set ->diff ($ set2 );
93+ $ result = $ set ->difference ($ set2 );
8494
8595 $ this ->assertSame (2 , $ result ->size );
8696 $ this ->assertSame ([1 ,2 ], $ result ->values ());
@@ -91,7 +101,7 @@ public function testDiffOnEmptySet()
91101 $ set = new Set ();
92102 $ set2 = new Set (3 , 4 );
93103
94- $ result = $ set ->diff ($ set2 );
104+ $ result = $ set ->difference ($ set2 );
95105 $ this ->assertSame (0 , $ result ->size );
96106 }
97107
@@ -100,7 +110,7 @@ public function testDiffOnEmptyTargetSet()
100110 $ set = new Set (1 ,2 );
101111 $ set2 = new Set ();
102112
103- $ result = $ set ->diff ($ set2 );
113+ $ result = $ set ->difference ($ set2 );
104114 $ this ->assertSame (2 , $ result ->size );
105115 }
106116
@@ -153,7 +163,7 @@ public function testMerge()
153163 $ set2 ->add (null );
154164
155165 $ expected = [1 , 2 , null ];
156- $ result = $ set ->merge ($ set2 )->values ();
166+ $ result = $ set ->unison ($ set2 )->values ();
157167
158168 $ this ->assertSame ($ expected , $ result );
159169 }
@@ -213,4 +223,20 @@ public function testSubsetShouldReturnFalse()
213223
214224 $ this ->assertFalse ($ set ->subset ($ subset ));
215225 }
226+
227+ public function testSymmetricDifference ()
228+ {
229+ $ set1 = new Set (1 , 2 , 'three ' );
230+ $ set2 = new Set (2 , 3 , 4 );
231+
232+ $ this ->assertEquals ([1 , 'three ' , 3 , 4 ], $ set1 ->symmetricDifference ($ set2 )->values ());
233+ $ this ->assertEqualsArray ([1 , 'three ' , 3 , 4 ], $ set2 ->symmetricDifference ($ set1 )->values ());
234+ }
235+
236+ protected function assertEqualsArray ($ expected , $ actual , $ message = '' )
237+ {
238+ sort ($ expected );
239+ sort ($ actual );
240+ $ this ->assertEquals ($ expected , $ actual , $ message );
241+ }
216242}
0 commit comments