* * 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:----maWOJL4Yu0pGueUdUeNiGUW8960083I3hUkW4/g3Wqbi7MrZDsdXIjHBbCCLEXDfrONBWtFK51W6CKdBasriNEnpkzh4oL4xrtvzSi+txabSHsHjknHmo9X41qSyXdlCPrsRSfhUq4oTuqa1gDwzX36scr+anlGmm1LWSsdFSlz5xk29cNb0xO7u7vCfJzeAKaMNw6b8tydWBC1Zkm0GsjyRN+LCHcyY6UKjDOzt0KoOFt2qy2OFKuu/C99hImDcRF++BGKlhAOBKwk1ju6rvdQq8fn1m6oVQyRTbS27ELixWiCGAelA0dEjHAIGxS3PWyz0PR17AYTYO/mBcQT7hXtGV5aA0A+fhFMyc4MdSaVvB/Lu2ludv2vQC/kuIbXsUJhZXIhgBc0X7G07GHnWLaFXyYdhL0skeLBDDqZ/9ixLOtr9lvSxDxS8BUnhx1TqvjYx9kKH4Erp0hESEtw4hpi6VPiIRR4Q21tbT1gTmDNFyHcNpFtbLXPGoJ/+YkbzQPgOu6UbmInf0yjjQlmy2CkQOAHVCrvIq9WcTEW39ZzkuNSj9++1OJpbs2QKeELRzEelFp93GKYnQXQmRJflHBo+IY7+tHYO5d6W81JEMU6X1d3rPMiwgJ8XRUXx1eQEPt/jz0c8ZE7jeL8orjwF14kotrs07IChum530vlX4YI=----ATTACHMENT:----ODM0NzA1NjgzNzIwOTU1NSA4NDgwMjY2NTk1MTA2MDMwIDkwNjYwNTQ5NDA2NDE3MzU=