public function testAbstract()
 {
     $container = new ContainerBuilder();
     $container->setDefinition('iqbal', new Definition\AbstractDefinition('\\Borobudur\\DependencyInjection\\Test\\Iqbal', '\\Borobudur\\DependencyInjection\\Test\\WarriorInterface'));
     $container->setDefinition('battle', new Definition('\\Borobudur\\DependencyInjection\\Test\\Battle'));
     $battle = $container->get('battle');
     $this->assertEquals('iqbal', $battle->warrior->getName());
     $this->assertEquals('fighter', $battle->warrior->getType());
     $container->setDefinition('tanaka', new Definition\AbstractDefinition('\\Borobudur\\DependencyInjection\\Test\\Tanaka', '\\Borobudur\\DependencyInjection\\Test\\WarriorInterface'));
     $this->assertTrue($container->has('iqbal'));
     $battle = $container->get('battle', array('x' => 'a'));
     $this->assertEquals('tanaka', $battle->warrior->getName());
     $this->assertEquals('archer', $battle->warrior->getType());
     $this->assertEquals('a', $battle->x);
     $battle = $container->get('battle', array(new Reference('iqbal')));
     $this->assertEquals('iqbal', $battle->warrior->getName());
     $this->assertEquals('fighter', $battle->warrior->getType());
     $battle = $container->get('battle', array(new Reference('tanaka'), 'a'));
     $this->assertEquals('tanaka', $battle->warrior->getName());
     $this->assertEquals('archer', $battle->warrior->getType());
     $this->assertEquals('a', $battle->x);
     $this->assertTrue($container->has('\\Borobudur\\DependencyInjection\\Test\\WarriorInterface'));
     $container->set('tanaka', function () {
     });
     $this->assertTrue($container->has('\\Borobudur\\DependencyInjection\\Test\\WarriorInterface'));
     $this->assertFalse($container->hasAlias('tanaka'));
 }