/** * Checks if the passed value is valid. * * @param FileDescriptor|ClassDescriptor|InterfaceDescriptor|TraitDescriptor $value The value that should * be validated. * @param Constraint $constraint The constraint for * the validation. * * @throws ConstraintDefinitionException if this is not a constraint on a PropertyDescriptor object. */ public function validate($value, Constraint $constraint) { if (!$value instanceof FileDescriptor && !$value instanceof ClassDescriptor && !$value instanceof InterfaceDescriptor && !$value instanceof TraitDescriptor) { throw new ConstraintDefinitionException('The HasPackageWithSubpackageValidator validator may only be used on files, classes, ' . 'interfaces and traits'); } if ($value->getTags()->get('subpackage', new Collection())->count() > 0 && $value->getTags()->get('package', new Collection())->count() < 1) { $this->context->addViolationAt('package', $constraint->message, array(), null, null, $constraint->code); } }
/** * @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); }
/** * Checks if the passed value is valid. * * @param FileDescriptor|ClassDescriptor|InterfaceDescriptor|TraitDescriptor $value The value that should * be validated. * @param Constraint $constraint The constraint for * the validation. * * @throws ConstraintDefinitionException if this is not a constraint on a PropertyDescriptor object. */ public function validate($value, Constraint $constraint) { if (!$value instanceof FileDescriptor && !$value instanceof ClassDescriptor && !$value instanceof InterfaceDescriptor && !$value instanceof TraitDescriptor) { throw new ConstraintDefinitionException('The HasSinglePackage validator may only be used on files, classes, interfaces and traits'); } if ($value->getTags()->get('package', new Collection())->count() > 1) { $this->context->addViolationAt('package', $constraint->message); } }