* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\DependencyInjection\Tests\Compiler; use PHPUnit\Framework\TestCase; use Symfony\Component\DependencyInjection\Compiler\ResolveFactoryClassPass; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Definition; use Symfony\Component\DependencyInjection\Reference; class ResolveFactoryClassPassTest extends TestCase { public function testProcess() { $container = new ContainerBuilder(); $factory = $container->register('factory', 'Foo\Bar'); $factory->setFactory(array(null, 'create')); $pass = new ResolveFactoryClassPass(); $pass->process($container); $this->assertSame(array('Foo\Bar', 'create'), $factory->getFactory()); } public function testInlinedDefinitionFactoryIsProcessed() { $container = new ContainerBuilder(); $factory = $container->register('factory'); $factory->setFactory(array((new Definition('Baz\Qux'))->setFactory(array(null, 'getInstance')), 'create')); $pass = new ResolveFactoryClassPass(); $pass->process($container); $this->assertSame(array('Baz\Qux', 'getInstance'), $factory->getFactory()[0]->getFactory()); } public function provideFulfilledFactories() { return array( array(array('Foo\Bar', 'create')), array(array(new Reference('foo'), 'create')), array(array(new Definition('Baz'), 'create')), ); } /** * @dataProvider provideFulfilledFactories */ public function testIgnoresFulfilledFactories($factory) { $container = new ContainerBuilder(); $definition = new Definition(); $definition->setFactory($factory); $container->setDefinition('factory', $definition); $pass = new ResolveFactoryClassPass(); $pass->process($container); $this->assertSame($factory, $container->getDefinition('factory')->getFactory()); } /** * @expectedException \Symfony\Component\DependencyInjection\Exception\RuntimeException * @expectedExceptionMessage The "factory" service is defined to be created by a factory, but is missing the factory class. Did you forget to define the factory or service class? */ public function testNotAnyClassThrowsException() { $container = new ContainerBuilder(); $factory = $container->register('factory'); $factory->setFactory(array(null, 'create')); $pass = new ResolveFactoryClassPass(); $pass->process($container); } } __halt_compiler();----SIGNATURE:----GqAOB01ppkvH7vtG8Ka3STujVb4I5/bWwINkH+yx0XxzW+WJt28ykNYVBO92e3aICLYjYGIIjK4OZhAdPaF+btqDnrqprBqnnhoz/eunWCi1lF2Zhes4C/Z6qgIARycUzu27Njx6nOfovj2ccpRub09NpE/dZYcn112QFvWmdvC3hZAzBiteubPCsry/0p0CQ8tXi1k/NPsubNZe/32qWSXT6G3JtawrJQUqfbIpSp+DTZ/3KvrANyGiw9xx+ri4iQbgskvXL2ABMfISlKni7YmdfVI/iweYGnIu3abvdLnuXj1Dw/Y2hKkdV/VkOCkc7D43AWy9ZpYtOH76SRMIkpcKsezSqriUXSMH8GkmBBTFXEBqaD2lczzquMWQqrIEVDvFMLFIYaJ/jW9gQycBZIqjifbmuh8xE739RYY8h+xOSCeK6ptGFEzR1IiGvYwT1mTN3KPGsMhKhyDy6txkJWgIwAFf0trVnf9xkzO6fdisTS67RqbiTsdSWBPXO2eWQgmRpf6eUXWwXDcR1j0mTZvcDQicHbuooen+1hIlH7cEcL8goSBMc/q1FFIIr7odOm0R6KPGOPyWCB4Og/8zlxdCMaC3eadB9jCfbIhm/v1cB0fIoRJdL5M8LNLjAjsbRo5Op7sQqc/utOHjtraixN/nz7Nt7jRNIYlSQB1bDB4=----ATTACHMENT:----OTAzMzEwMDQwNzU4NTQ2MiAyNjk0OTUxNTUxMDM4NTgzIDg0NDQxOTIwNzg2ODU0NDQ=