public function testIteratesOverEachElementAndUsesTheDecoratedResolverToResolveEachValue()
{
$parameter = new Parameter('array_param', ['foo', 'bar']);
$unresolvedParameters = new ParameterBag(['name' => 'unresolvedParams']);
$resolvedParameters = new ParameterBag(['name' => 'resolvedParams']);
$context = new ResolvingContext();
$injectedResolverProphecy = $this->prophesize(ParameterResolverInterface::class);
$context->add('array_param');
$injectedResolverProphecy->resolve(new Parameter('0', 'foo'), $unresolvedParameters, $resolvedParameters, $context)->willReturn(new ParameterBag(['name' => 'resolvedParams', '0' => 'val1']));
$context->add('array_param');
$injectedResolverProphecy->resolve(new Parameter('1', 'bar'), $unresolvedParameters, $resolvedParameters, $context)->willReturn(new ParameterBag(['name' => 'resolvedParams', '1' => 'val2']));
/* @var ParameterResolverInterface $injectedResolver */
$injectedResolver = $injectedResolverProphecy->reveal();
$resolver = (new ArrayParameterResolver())->withResolver($injectedResolver);
$result = $resolver->resolve($parameter, $unresolvedParameters, $resolvedParameters, $context);
$this->assertEquals(new ParameterBag(['name' => 'resolvedParams', 'array_param' => ['0' => 'val1', '1' => 'val2']]), $result);
$injectedResolverProphecy->resolve(Argument::cetera())->shouldHaveBeenCalledTimes(2);
}