public function testFilter() { $stream = new S\Stream($this->array); $predicate = function ($item) { return !($item % 2); }; $result = $stream->filter($predicate); $this->assertEquals(array(2, 4), $result->getElements()); $stream = new S\Stream($this->array); $predicateEven = function ($item) { return !($item % 2); }; $predicateEqualsFour = function ($item) { return $item == 4; }; $secondResult = $stream->filter($predicateEven)->filter($predicateEqualsFour); $this->assertEquals(array(4), $secondResult->getElements()); }