public function testTake()
{
$this->assertEquals([1, 2, 3], take([1, 2, 3, 4, 5, 6, 7, 8, 9], 3));
$this->assertEquals([1, 2, 3], take(new \ArrayIterator([1, 2, 3, 4, 5, 6, 7, 8, 9]), 3));
$this->assertEquals([1, 3, 5], take([1, 2, 3, 4, 5, 6, 7, 8, 9], 3, 2));
$this->assertEquals([1, 3, 5], take(new \ArrayIterator([1, 2, 3, 4, 5, 6, 7, 8, 9]), 3, 2));
$this->assertEquals([1, 4, 7], take([1, 2, 3, 4, 5, 6, 7, 8, 9], 5, 3));
$this->assertEquals([], take([1, 2, 3, 4, 5, 6, 7, 8, 9], 0));
$this->assertEquals([], take([], 3));
$this->assertEquals([], take([], 3, 2));
$this->assertEquals([1, 2, 3], call_user_func(take, [1, 2, 3, 4, 5, 6, 7, 8, 9], 3));
$this->assertEquals('\\nspl\\a\\take', take);
}