public function testCreateDefinition()
 {
     $definition = new Definition('Demo', array(new Reference('service_id')));
     $definition->addArgument('welcome')->setProperty('message', 'Hello world')->addMethodCall('setMessage', array('Just Hello'))->setAbstract('DemoInterface')->share();
     $this->assertEquals('Demo', $definition->getClass());
     $this->assertCount(2, $definition->getArgument()->all());
     $this->assertInstanceOf('\\Borobudur\\DependencyInjection\\Reference', $definition->getArgument()->get(0));
     $this->assertCount(1, $definition->getProperty()->all());
     $this->assertEquals('Hello world', $definition->getProperty()->get('message'));
     $this->assertCount(1, $definition->getMethodCall()->all());
     $this->assertSame(array('setMessage', array('Just Hello')), $definition->getMethodCall()->get(0));
     $this->assertTrue($definition->isAbstract());
     $this->assertEquals('DemoInterface', $definition->getAbstract());
     $this->assertTrue($definition->isShared());
 }
 /**
  * Create service.
  *
  * @param Definition $definition
  * @param array      $args
  *
  * @return InstanceManager
  */
 public function createService(Definition $definition, array $args = array())
 {
     $instance = $this->getDi()->createInstance($definition->getClass(), array_merge($definition->getArgument()->all(), $args));
     $instance->callMethods($definition->getMethodCall()->all());
     $instance->setProperties($definition->getProperty()->all());
     return $instance;
 }