@@ -48,6 +48,36 @@ public function collapsing(): void
4848 $ this ->assertThat ($ collapsedCollection , CollectionIsEqual::to ([1 , 2 , 3 , 4 , 5 , 6 ]));
4949 }
5050
51+ /**
52+ * @test
53+ */
54+ public function singleDepthCollapsing (): void
55+ {
56+ $ collection = self ::toCollection ([1 , 2 ], [3 , 4 ], [5 , 6 , [7 , 8 ]]);
57+
58+ $ collapsedCollection = $ collection
59+ ->stream ()
60+ ->reorganize (Reorganizers::collapse (1 ))
61+ ->getCollection ()
62+ ;
63+ $ this ->assertThat ($ collapsedCollection , CollectionIsEqual::to ([1 , 2 , 3 , 4 , 5 , 6 , [7 , 8 ]]));
64+ }
65+
66+ /**
67+ * @test
68+ */
69+ public function numericDepthCollapsing (): void
70+ {
71+ $ collection = self ::toCollection ([1 , 2 ], [3 , 4 ], [5 , 6 , [7 , 8 , [9 , 10 ]]]);
72+
73+ $ collapsedCollection = $ collection
74+ ->stream ()
75+ ->reorganize (Reorganizers::collapse (3 ))
76+ ->getCollection ()
77+ ;
78+ $ this ->assertThat ($ collapsedCollection , CollectionIsEqual::to ([1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]));
79+ }
80+
5181 /**
5282 * @test
5383 */
@@ -67,4 +97,22 @@ public function filterDistinctElements(): void
6797
6898 self ::assertThat ($ uniqCollection , CollectionIsEqual::to ([$ o1 , $ o2 , $ o3 ]));
6999 }
100+
101+ /**
102+ * @test
103+ */
104+ public function filterDistinctCastedValues (): void
105+ {
106+ $ caster = static function (int $ number ) {
107+ return $ number % 2 ;
108+ };
109+
110+ $ result = CollectionFactory::numbers (0 , 10 )
111+ ->stream ()
112+ ->filter (Predicates::lockDuplicated ($ caster ))
113+ ->toArray ()
114+ ;
115+
116+ $ this ->assertCount (2 , $ result );
117+ }
70118}
0 commit comments