Example #1
0
 /**
  * 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());
 }