public function ContainerTest::testEnterLeaveScopeWithChildScopes

File

drupal/core/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Tests/ContainerTest.php, line 233

Class

ContainerTest

Namespace

Symfony\Component\DependencyInjection\Tests

Code

public function testEnterLeaveScopeWithChildScopes() {
  $container = new Container();
  $container
    ->addScope(new Scope('foo'));
  $container
    ->addScope(new Scope('bar', 'foo'));
  $this
    ->assertFalse($container
    ->isScopeActive('foo'));
  $container
    ->enterScope('foo');
  $container
    ->enterScope('bar');
  $this
    ->assertTrue($container
    ->isScopeActive('foo'));
  $this
    ->assertFalse($container
    ->has('a'));
  $a = new \stdClass();
  $container
    ->set('a', $a, 'bar');
  $services = $this
    ->getField($container, 'scopedServices');
  $this
    ->assertTrue(isset($services['bar']['a']));
  $this
    ->assertSame($a, $services['bar']['a']);
  $this
    ->assertTrue($container
    ->has('a'));
  $container
    ->leaveScope('foo');
  $services = $this
    ->getField($container, 'scopedServices');
  $this
    ->assertFalse(isset($services['bar']));
  $this
    ->assertFalse($container
    ->isScopeActive('foo'));
  $this
    ->assertFalse($container
    ->has('a'));
}