RemoveUnusedDefinitionsPassTest.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. namespace Symfony\Tests\Component\DependencyInjection\Compiler;
  3. use Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass;
  4. use Symfony\Component\DependencyInjection\Definition;
  5. use Symfony\Component\DependencyInjection\Reference;
  6. use Symfony\Component\DependencyInjection\ContainerBuilder;
  7. class RemoveUnusedDefinitionsPassTest extends \PHPUnit_Framework_TestCase
  8. {
  9. public function testProcess()
  10. {
  11. $container = new ContainerBuilder();
  12. $container
  13. ->register('foo')
  14. ->setPublic(false)
  15. ;
  16. $container
  17. ->register('bar')
  18. ->setPublic(false)
  19. ;
  20. $container
  21. ->register('moo')
  22. ->setArguments(array(new Reference('bar')))
  23. ;
  24. $this->process($container);
  25. $this->assertFalse($container->hasDefinition('foo'));
  26. $this->assertTrue($container->hasDefinition('bar'));
  27. $this->assertTrue($container->hasDefinition('moo'));
  28. }
  29. public function testProcessRemovesUnusedDefinitionsRecursively()
  30. {
  31. $container = new ContainerBuilder();
  32. $container
  33. ->register('foo')
  34. ->setPublic(false)
  35. ;
  36. $container
  37. ->register('bar')
  38. ->setArguments(array(new Reference('foo')))
  39. ->setPublic(false)
  40. ;
  41. $this->process($container);
  42. $this->assertFalse($container->hasDefinition('foo'));
  43. $this->assertFalse($container->hasDefinition('bar'));
  44. }
  45. public function testProcessWorksWithInlinedDefinitions()
  46. {
  47. $container = new ContainerBuilder();
  48. $container
  49. ->register('foo')
  50. ->setPublic(false)
  51. ;
  52. $container
  53. ->register('bar')
  54. ->setArguments(array(new Definition(null, array(new Reference('foo')))))
  55. ;
  56. $this->process($container);
  57. $this->assertTrue($container->hasDefinition('foo'));
  58. $this->assertTrue($container->hasDefinition('bar'));
  59. }
  60. protected function process(ContainerBuilder $container)
  61. {
  62. $pass = new RemoveUnusedDefinitionsPass();
  63. $pass->process($container);
  64. }
  65. }