public function testGetAllMethods() { $gClass = new GClass(__NAMESPACE__ . '\\ToStubTestClass'); $gClass->elevateClass(); $toImplement = array(); foreach ($gClass->getAllMethods() as $method) { if ($method->isAbstract()) { $toImplement[] = $method->getName(); } } $this->assertArrayEquals(array('implementIt', 'implementItFromParent', 'getName', 'generateDependency'), $toImplement); }
public function elevateParent() { if (isset($this->parentClass)) { $this->parentClass->elevateClass(); foreach ($this->parentClass->getAllProperties() as $gProperty) { // nicht addProperty nehmen das würde declaringClass falsch setzen $this->properties[$gProperty->getName()] = $gProperty; } foreach ($this->parentClass->getAllMethods() as $gMethod) { // nicht addMethod nehmen das würde declaringClass falsch setzen $this->methods[$gMethod->getName()] = $gMethod; } } }
public function testOwnMethodsGetter() { $gClass = new GClass($refl = new ReflectionClass('Psc\\Code\\Compile\\Compiler')); $this->assertEquals('\\Psc\\Code\\Compile', $gClass->getNamespace()); $gm = $gClass->getMethod('getClassName'); // getClassName ist aus Psc\SimpleObject und somit eine Methode einer Vaterklasse $m = $refl->getMethod('getClassName'); $this->assertEquals((string) $m->getDeclaringClass()->getName(), (string) $gm->getDeclaringClass()->getFQN()); $this->assertArrayHasKey('getClassName', $gClass->getAllMethods()); $this->assertArrayNotHasKey('getClassName', $gClass->getMethods()); $this->assertLessThan(count($gClass->getAllMethods()), count($gClass->getMethods())); $m = $gClass->createMethod('Test'); $this->assertNotEmpty($m->getDeclaringClass()); /* BUG: Namespace verändern verändert die Rückggabe der Methoden */ $gClass = GClass::factory('Psc\\Code\\Generate\\MyTestClass'); $this->assertEquals(2, count($gClass->getMethods())); $this->assertEquals(2, count($gClass->getAllMethods())); $gClass->setNamespace('Psc\\Other\\Than\\Before'); $this->assertEquals(2, count($gClass->getMethods())); $this->assertEquals(2, count($gClass->getAllMethods())); }