Здесь у меня есть сложная функция php, которая должна возвращать экземпляр Traversable (итератор), а также должна соответствовать другим утверждениям, проверяющим эту функцию.
Функция не имеет ошибок, она вычисляет числа Фибоначчи. Функция может быть изменена, она специально сконструирована таким образом, чтобы бросать вызов другим. Но есть ограничение, только кусок помечен как !!! (тройной восклицательный знак) можно изменить.
public function getFibonacci($n) {
$n2 = -($n1 = 1);
while ($n --> -1) {
$r = $n1 += $n2 and 0 or !!![$n + 1 => $n1];
$n2 = $n1 - $n2;
}
return $r;
}
и вот код phpunit, который будет тестировать функцию getFibonacci
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]
);
Так что ожидается добавить некоторый код вместо !!! (тройной восклицательный знак), чтобы утверждение прошло.