add new assertion

This commit is contained in:
Mert Aşan
2021-09-16 18:09:45 +03:00
parent 2f0cd7a4e3
commit 12e63c7376

View File

@ -154,9 +154,10 @@ final class Expectation
throw new BadMethodCallException('Expectation value is not iterable.'); throw new BadMethodCallException('Expectation value is not iterable.');
} }
$value = is_array($this->value) ? $this->value : iterator_to_array($this->value); $value = is_array($this->value) ? $this->value : iterator_to_array($this->value);
$keys = array_keys($value); $keys = array_keys($value);
$values = array_values($value); $values = array_values($value);
$callbacksCount = count($callbacks);
$index = 0; $index = 0;
@ -165,6 +166,10 @@ final class Expectation
$index = $index < count($values) - 1 ? $index + 1 : 0; $index = $index < count($values) - 1 ? $index + 1 : 0;
} }
if ($callbacksCount > count($values)) {
Assert::assertLessThanOrEqual(count($value), count($callbacks));
}
foreach ($values as $key => $item) { foreach ($values as $key => $item) {
if (is_callable($callbacks[$key])) { if (is_callable($callbacks[$key])) {
call_user_func($callbacks[$key], new self($item), new self($keys[$key])); call_user_func($callbacks[$key], new self($item), new self($keys[$key]));