public function testFlatMap() { $seq = new Sequence(); $seq->addAll([new Some('a'), new Some('b'), None::create(), new Some('c')]); $this->assertEquals(['aA', 'bA', 'cA'], iterator_to_array($seq->flatMap(function ($x) { return $x->map(function ($v) { return $v . 'A'; }); }))); $seq = new Sequence(); $seq->addAll([[1, 2, 3, 4], [5, 6], [7]]); $this->assertEquals([2, 3, 4, 5, 6, 7, 8], iterator_to_array($seq->flatMap(function ($x) { return array_map(function ($v) { return $v + 1; }, $x); }))); }