/**
  * @covers Brickoo\Component\Annotation\Definition\AnnotationDefinitionTargetFilter::__construct
  * @covers Brickoo\Component\Annotation\Definition\AnnotationDefinitionTargetFilter::filter
  */
 public function testFilterAnnotationDefinitionsByTarget()
 {
     $definition = new AnnotationDefinition("annotation_1", Annotation::TARGET_CLASS);
     $annotationFilter = new AnnotationDefinitionTargetFilter(new Collection([$definition, new AnnotationDefinition("annotation_2", Annotation::TARGET_PROPERTY), new AnnotationDefinition("annotation_3", Annotation::TARGET_METHOD)]));
     $filteredAnnotations = $annotationFilter->filter(Annotation::TARGET_CLASS);
     $this->assertSame($definition, $filteredAnnotations->current());
 }
 /**
  * Validates a reader result against the provided definition.
  * @param \Brickoo\Component\Common\Collection $collection
  * @param \Brickoo\Component\Annotation\AnnotationReaderResult $readerResult
  * @throws \Brickoo\Component\Annotation\Exception\MissingRequiredAnnotationException
  * @throws \Brickoo\Component\Annotation\Exception\MissingRequiredAnnotationParametersException
  * @return void
  */
 public function validate(Collection $collection, AnnotationReaderResult $readerResult)
 {
     $targets = [Annotation::TARGET_CLASS, Annotation::TARGET_METHOD, Annotation::TARGET_PROPERTY];
     $annotationFilter = new AnnotationDefinitionTargetFilter($collection);
     foreach ($targets as $annotationTarget) {
         $this->validateAnnotations($annotationFilter->filter($annotationTarget), $readerResult->getAnnotationsByTarget($annotationTarget));
     }
 }
 /**
  * Set the annotation white list for an annotation type.
  * @param integer $targetType
  * @return \Brickoo\Component\Annotation\AnnotationReflectionClassReader
  */
 private function setAnnotationWhiteList($targetType)
 {
     $this->annotationParser->setAnnotationWhitelist($this->getAnnotationsNames($this->annotationTargetFilter->filter($targetType)));
     return $this;
 }