4 * This file is part of the Symfony package.
6 * (c) Fabien Potencier <fabien@symfony.com>
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
12 namespace Symfony\Component\DependencyInjection\Tests\Compiler;
14 use PHPUnit\Framework\TestCase;
15 use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
16 use Symfony\Component\DependencyInjection\Compiler\ExtensionCompilerPass;
17 use Symfony\Component\DependencyInjection\ContainerBuilder;
18 use Symfony\Component\DependencyInjection\Extension\Extension;
21 * @author Wouter J <wouter@wouterj.nl>
23 class ExtensionCompilerPassTest extends TestCase
28 protected function setUp()
30 $this->container = new ContainerBuilder();
31 $this->pass = new ExtensionCompilerPass();
34 public function testProcess()
36 $extension1 = new CompilerPassExtension('extension1');
37 $extension2 = new DummyExtension('extension2');
38 $extension3 = new DummyExtension('extension3');
39 $extension4 = new CompilerPassExtension('extension4');
41 $this->container->registerExtension($extension1);
42 $this->container->registerExtension($extension2);
43 $this->container->registerExtension($extension3);
44 $this->container->registerExtension($extension4);
46 $this->pass->process($this->container);
48 $this->assertTrue($this->container->hasDefinition('extension1'));
49 $this->assertFalse($this->container->hasDefinition('extension2'));
50 $this->assertFalse($this->container->hasDefinition('extension3'));
51 $this->assertTrue($this->container->hasDefinition('extension4'));
55 class DummyExtension extends Extension
59 public function __construct($alias)
61 $this->alias = $alias;
64 public function getAlias()
69 public function load(array $configs, ContainerBuilder $container)
73 public function process(ContainerBuilder $container)
75 $container->register($this->alias);
79 class CompilerPassExtension extends DummyExtension implements CompilerPassInterface