Chris@13: Class_::MODIFIER_ABSTRACT]); Chris@0: $this->assertTrue($class->isAbstract()); Chris@0: Chris@0: $class = new Class_('Foo'); Chris@0: $this->assertFalse($class->isAbstract()); Chris@0: } Chris@0: Chris@0: public function testIsFinal() { Chris@13: $class = new Class_('Foo', ['type' => Class_::MODIFIER_FINAL]); Chris@0: $this->assertTrue($class->isFinal()); Chris@0: Chris@0: $class = new Class_('Foo'); Chris@0: $this->assertFalse($class->isFinal()); Chris@0: } Chris@0: Chris@0: public function testGetMethods() { Chris@13: $methods = [ Chris@0: new ClassMethod('foo'), Chris@0: new ClassMethod('bar'), Chris@0: new ClassMethod('fooBar'), Chris@13: ]; Chris@13: $class = new Class_('Foo', [ Chris@13: 'stmts' => [ Chris@13: new TraitUse([]), Chris@0: $methods[0], Chris@13: new ClassConst([]), Chris@0: $methods[1], Chris@13: new Property(0, []), Chris@0: $methods[2], Chris@13: ] Chris@13: ]); Chris@0: Chris@0: $this->assertSame($methods, $class->getMethods()); Chris@0: } Chris@0: Chris@0: public function testGetMethod() { Chris@0: $methodConstruct = new ClassMethod('__CONSTRUCT'); Chris@0: $methodTest = new ClassMethod('test'); Chris@13: $class = new Class_('Foo', [ Chris@13: 'stmts' => [ Chris@13: new ClassConst([]), Chris@0: $methodConstruct, Chris@13: new Property(0, []), Chris@0: $methodTest, Chris@13: ] Chris@13: ]); Chris@0: Chris@0: $this->assertSame($methodConstruct, $class->getMethod('__construct')); Chris@0: $this->assertSame($methodTest, $class->getMethod('test')); Chris@0: $this->assertNull($class->getMethod('nonExisting')); Chris@0: } Chris@0: }