public function testFlatten() { $nestedList = [1, 2, [3, 4], 5, [6, [7, 8, [9, [10, 11], 12]]]]; $flattened = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; $this->assertEquals($flattened, P::toArray(P::flatten($nestedList))); $nestedList = [1, [2], [3, [4, 5], 6, [[[7], 8]]], 9, 10]; $flattened = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; $this->assertEquals($flattened, P::toArray(P::flatten($nestedList))); $nestedList = [1, [2], [3, [4, 5], 6, [[[7], 8]]], 9, 10]; $flattened = [1, [2], [3, [4, 5], 6, [[[7], 8]]], 9, 10]; $this->assertNotEquals($flattened, P::toArray(P::flatten($nestedList))); $nestedList = [[], [], []]; $flattened = []; $this->assertEquals($flattened, P::toArray(P::flatten($nestedList))); $assoc = ['a' => 'b', 'c' => ['d' => 'e'], 'f' => ['g' => 'h', 'i' => ['j' => 'k']], 'l' => ['m' => ['n' => ['o' => ['p' => 'q']]]]]; $a = function () { (yield [1, [2, 3]]); (yield 4); (yield [5]); }; $this->assertEquals([1, 2, 3, 4, 5], P::toArray(P::flatten($a()))); }