/**
* {@inheritdoc}
*
* @param DynamicArrayValue $value
*/
public function resolve(ValueInterface $value, FixtureInterface $fixture, ResolvedFixtureSet $fixtureSet, array $scope, GenerationContext $context) : ResolvedValueWithFixtureSet
{
$this->checkResolver(__METHOD__);
$quantifier = $value->getQuantifier();
if ($quantifier instanceof ValueInterface) {
$result = $this->resolver->resolve($quantifier, $fixture, $fixtureSet, $scope, $context);
list($quantifier, $fixtureSet) = [$result->getValue(), $result->getSet()];
}
if ($quantifier < 0) {
throw InvalidArgumentExceptionFactory::createForInvalidDynamicArrayQuantifier($fixture, $quantifier);
}
$element = $value->getElement();
if (false === $element instanceof ValueInterface) {
$array = array_fill(0, $quantifier, $element);
return new ResolvedValueWithFixtureSet($array, $fixtureSet);
}
$array = [];
for ($i = 0; $i < $quantifier; $i++) {
$result = $this->resolver->resolve($element, $fixture, $fixtureSet, $scope, $context);
$array[] = $result->getValue();
$fixtureSet = $result->getSet();
}
return new ResolvedValueWithFixtureSet($array, $fixtureSet);
}