public function testResolvesElementAsManyTimeAsNecessaryIfItIsAValue()
{
$quantifier = 2;
$element = new FakeValue();
$value = new DynamicArrayValue($quantifier, $element);
$fixture = new DummyFixture('dummy');
$set = ResolvedFixtureSetFactory::create();
$scope = ['injected' => true];
$context = new GenerationContext();
$context->markIsResolvingFixture('bar');
$decoratedResolverProphecy = $this->prophesize(ValueResolverInterface::class);
$setAfterFirstResolution = ResolvedFixtureSetFactory::create(new ParameterBag(['iteration' => 0]));
$decoratedResolverProphecy->resolve($element, $fixture, $set, $scope, $context)->willReturn(new ResolvedValueWithFixtureSet(10, $setAfterFirstResolution));
$setAfterSecondResolution = ResolvedFixtureSetFactory::create(new ParameterBag(['iteration' => 1]));
$decoratedResolverProphecy->resolve($element, $fixture, $setAfterFirstResolution, $scope, $context)->willReturn(new ResolvedValueWithFixtureSet(100, $setAfterSecondResolution));
/** @var ValueResolverInterface $decoratedResolver */
$decoratedResolver = $decoratedResolverProphecy->reveal();
$resolver = new DynamicArrayValueResolver($decoratedResolver);
$result = $resolver->resolve($value, $fixture, $set, $scope, $context);
$this->assertSame([10, 100], $result->getValue());
$this->assertEquals($setAfterSecondResolution, $result->getSet());
}