public function testDecoratesResolverToResolveParameterBag()
{
$unresolvedParameters = new ParameterBag(['foo' => '(unresolved) bar', 'ping' => '(unresolved) pong']);
$injectedResolverProphecy = $this->prophesize(ParameterResolverInterface::class);
$injectedResolverProphecy->resolve(new Parameter('foo', '(unresolved) bar'), $unresolvedParameters, new ParameterBag(), new ResolvingContext('foo'))->willReturn($firstResolveResult = new ParameterBag(['foo' => 'bar', 'other_param' => 'yo']));
$injectedResolverProphecy->resolve(new Parameter('ping', '(unresolved) pong'), $unresolvedParameters, $firstResolveResult, new ResolvingContext('ping'))->willReturn(new ParameterBag(['foo' => 'bar', 'other_param' => 'yo', 'ping' => 'pong']));
/* @var ParameterResolverInterface $injectedResolver */
$injectedResolver = $injectedResolverProphecy->reveal();
$resolver = new SimpleParameterBagResolver($injectedResolver);
$result = $resolver->resolve($unresolvedParameters);
$this->assertEquals(new ParameterBag(['foo' => 'bar', 'other_param' => 'yo', 'ping' => 'pong']), $result);
$injectedResolverProphecy->resolve(Argument::cetera())->shouldHaveBeenCalledTimes(2);
}