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