From bf7eeef3fb3e2cd41df6cb4d2b0765cecfbeda36 Mon Sep 17 00:00:00 2001 From: Samuel ROZE Date: Thu, 16 Nov 2017 13:37:56 +0200 Subject: [PATCH] Prove that change is working with tests --- .../ResolveNamedArgumentsPassTest.php | 27 +++++++++++++++++++ .../Tests/Fixtures/SimilarArgumentsDummy.php | 19 +++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 src/Symfony/Component/DependencyInjection/Tests/Fixtures/SimilarArgumentsDummy.php diff --git a/src/Symfony/Component/DependencyInjection/Tests/Compiler/ResolveNamedArgumentsPassTest.php b/src/Symfony/Component/DependencyInjection/Tests/Compiler/ResolveNamedArgumentsPassTest.php index fac05f070b..fe681b41df 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Compiler/ResolveNamedArgumentsPassTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Compiler/ResolveNamedArgumentsPassTest.php @@ -17,6 +17,7 @@ use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\DependencyInjection\Tests\Fixtures\CaseSensitiveClass; use Symfony\Component\DependencyInjection\Tests\Fixtures\NamedArgumentsDummy; +use Symfony\Component\DependencyInjection\Tests\Fixtures\SimilarArgumentsDummy; /** * @author Kévin Dunglas @@ -125,6 +126,32 @@ class ResolveNamedArgumentsPassTest extends TestCase $this->assertEquals(array(new Reference('foo'), '123'), $definition->getArguments()); } + + public function testResolvesMultipleArgumentsOfTheSameType() + { + $container = new ContainerBuilder(); + + $definition = $container->register(SimilarArgumentsDummy::class, SimilarArgumentsDummy::class); + $definition->setArguments(array(CaseSensitiveClass::class => new Reference('foo'), '$token' => 'qwerty')); + + $pass = new ResolveNamedArgumentsPass(); + $pass->process($container); + + $this->assertEquals(array(new Reference('foo'), 'qwerty', new Reference('foo')), $definition->getArguments()); + } + + public function testResolvePrioritizeNamedOverType() + { + $container = new ContainerBuilder(); + + $definition = $container->register(SimilarArgumentsDummy::class, SimilarArgumentsDummy::class); + $definition->setArguments(array(CaseSensitiveClass::class => new Reference('foo'), '$token' => 'qwerty', '$class1' => new Reference('bar'))); + + $pass = new ResolveNamedArgumentsPass(); + $pass->process($container); + + $this->assertEquals(array(new Reference('bar'), 'qwerty', new Reference('foo')), $definition->getArguments()); + } } class NoConstructor diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/SimilarArgumentsDummy.php b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/SimilarArgumentsDummy.php new file mode 100644 index 0000000000..08c406cf23 --- /dev/null +++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/SimilarArgumentsDummy.php @@ -0,0 +1,19 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\DependencyInjection\Tests\Fixtures; + +class SimilarArgumentsDummy +{ + public function __construct(CaseSensitiveClass $class1, string $token, CaseSensitiveClass $class2) + { + } +}