예제 #1
0
 public function testBuilderDefinitionHasMethods()
 {
     $class = new Builder\PhpClass();
     $class->setName('Foo');
     $definition = new BuilderDefinition();
     $definition->addClass($class);
     $this->assertFalse($definition->hasMethods('Foo'));
     $class->createInjectionMethod('injectBar');
     $this->assertTrue($definition->hasMethods('Foo'));
 }
예제 #2
0
 public function testBuilderCanBuildClassWithMethods()
 {
     $class = new Builder\PhpClass();
     $class->setName('Foo');
     $class->addSuperType('Parent');
     $injectionMethod = new Builder\InjectionMethod();
     $injectionMethod->setName('injectBar');
     $injectionMethod->addParameter('bar', 'Bar');
     $class->addInjectionMethod($injectionMethod);
     $definition = new BuilderDefinition();
     $definition->addClass($class);
     $this->assertTrue($definition->hasClass('Foo'));
     $this->assertEquals('__construct', $definition->getInstantiator('Foo'));
     $this->assertContains('Parent', $definition->getClassSupertypes('Foo'));
     $this->assertTrue($definition->hasMethods('Foo'));
     $this->assertTrue($definition->hasMethod('Foo', 'injectBar'));
     $this->assertContains('injectBar', $definition->getMethods('Foo'));
     $this->assertEquals(array('Foo::injectBar:0' => array('bar', 'Bar', true)), $definition->getMethodParameters('Foo', 'injectBar'));
 }