/** * 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); } }
/** * 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); } }
/** * @covers phpDocumentor\Descriptor\TraitDescriptor::getMagicProperties */ public function testMagicPropertiesReturnsExpectedCollectionWithTags() { $mockTagPropertyDescriptor = m::mock('phpDocumentor\\Descriptor\\Tag\\PropertyDescriptor'); $mockTagPropertyDescriptor->shouldReceive('getVariableName')->andReturn('Sample'); $mockTagPropertyDescriptor->shouldReceive('getDescription')->andReturn('Sample description'); $mockTagPropertyDescriptor->shouldReceive('getTypes')->andReturn(new Collection()); $propertyCollection = new Collection(array($mockTagPropertyDescriptor)); $this->fixture->getTags()->set('property', $propertyCollection); $this->assertInstanceOf('phpDocumentor\\Descriptor\\Collection', $this->fixture->getMagicProperties()); $magicPropertiesCollection = $this->fixture->getMagicProperties(); $this->assertSame(1, $magicPropertiesCollection->count()); $this->assertSame('Sample', $magicPropertiesCollection[0]->getName()); $this->assertSame('Sample description', $magicPropertiesCollection[0]->getDescription()); $this->assertInstanceOf('phpDocumentor\\Descriptor\\Collection', $magicPropertiesCollection[0]->getTypes()); $this->assertSame(0, $magicPropertiesCollection[0]->getTypes()->count()); $this->assertSame($this->fixture, $magicPropertiesCollection[0]->getParent()); }