/** * testUnfold */ public function testUnfold() { $called = 0; $actual = Ginq::unfold(1, function ($x) use(&$called) { $called++; return $x <= 5 ? array($x, $x + 1) : null; })->toList(); $this->assertEquals(array(1, 2, 3, 4, 5), $actual); $this->assertEquals(6, $called); $ns = Ginq::unfold(1, function ($x) { return array($x, $x + 1); }); $this->assertEquals(array(1, 2, 3, 4, 5), $ns->take(5)->toList()); $this->assertEquals(array(1, 2, 3, 4, 5), $ns->take(5)->toList()); $ns = Ginq::unfold(1, array('x' => '[x, x+1]')); $this->assertEquals(array(1, 2, 3, 4, 5), $ns->take(5)->toList()); $this->assertEquals(array(1, 2, 3, 4, 5), $ns->take(5)->toList()); }