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'));
}