Here I have a challenging php function that should return an instanceof Traversable (iterator) and also need to meet other assertions that test this function.
Function has no errors, it computes Fibonacci numbers. The function can be modified, it is specifically constructed this way to challenge others. But there is a restriction, only piece labeled as !!! (triple exclamation mark) can be changed.
public function getFibonacci($n) {
$n2 = -($n1 = 1);
while ($n --> -1) {
$r = $n1 += $n2 and 0 or !!![$n + 1 => $n1];
$n2 = $n1 - $n2;
}
return $r;
}
and here is a phpunit code that will test getFibonacci function
assertTrue(
($res = (getFibonacci(8))
&& ($res instanceof \Traversable)
&& count($arr = iterator_to_array($res)) === 9
&& array_keys($arr) == range(8, 0, -1)
&& array_values($arr) == [0, 1, 1, 2, 3, 5, 8, 13, 21]
);
So expected to add some code instead of !!! (triple exclamation mark) so that assertion will pass.