/**
  * @covers phpDocumentor\Descriptor\ClassDescriptor::getMagicMethods
  */
 public function testGetMagicMethods()
 {
     $methodName = 'methodName';
     $description = 'description';
     $response = array('string');
     $arguments = array('name' => 'argument');
     $this->assertEquals(0, $this->fixture->getMagicMethods()->count());
     $methodMock = m::mock('phpDocumentor\\Descriptor\\Tag\\MethodDescriptor');
     $methodMock->shouldReceive('getMethodName')->andReturn($methodName);
     $methodMock->shouldReceive('getDescription')->andReturn($description);
     $methodMock->shouldReceive('getResponse')->andReturn($response);
     $methodMock->shouldReceive('getArguments')->andReturn($arguments);
     $this->fixture->getTags()->get('method', new Collection())->add($methodMock);
     $magicMethods = $this->fixture->getMagicMethods();
     $this->assertCount(1, $magicMethods);
     /** @var MethodDescriptor $magicMethod */
     $magicMethod = current($magicMethods->getAll());
     $this->assertEquals($methodName, $magicMethod->getName());
     $this->assertEquals($description, $magicMethod->getDescription());
     $this->assertEquals($response, $magicMethod->getResponse());
     $mock = m::mock('phpDocumentor\\Descriptor\\ClassDescriptor');
     $mock->shouldReceive('getMagicMethods')->andReturn(new Collection(array('magicMethods')));
     $this->fixture->setParent($mock);
     $magicMethods = $this->fixture->getMagicMethods();
     $this->assertCount(2, $magicMethods);
 }
 /**
  * @param ClassDescriptor $class
  *
  * @return MethodDescriptor[]
  */
 public function getPublicMethods($class)
 {
     if (!$class instanceof ClassDescriptor) {
         return [];
     }
     $methods = $class->getMagicMethods()->merge($class->getInheritedMethods())->merge($class->getMethods());
     return array_filter($methods->getAll(), function (MethodDescriptor $method) {
         return $method->getVisibility() == 'public';
     });
 }