/**
  * @covers Brickoo\Component\Annotation\AnnotationParser::parse
  * @covers Brickoo\Component\Annotation\AnnotationParser::getAnnotationsMatches
  * @covers Brickoo\Component\Annotation\AnnotationParser::getAnnotationList
  * @covers Brickoo\Component\Annotation\AnnotationParser::isAnnotationInWhitelist
  * @covers Brickoo\Component\Annotation\AnnotationParser::getAnnotationValues
  * @covers Brickoo\Component\Annotation\AnnotationParser::getParameterValues
  * @covers Brickoo\Component\Annotation\AnnotationParser::attachParameterValues
  * @covers Brickoo\Component\Annotation\AnnotationParser::convertValue
  * @covers Brickoo\Component\Annotation\AnnotationParser::transformScalar
  * @covers Brickoo\Component\Annotation\AnnotationParser::transformIfIsNumeric
  * @covers Brickoo\Component\Annotation\AnnotationParser::transformIfIsBoolean
  * @covers Brickoo\Component\Annotation\AnnotationParser::convertAnnotations
  */
 public function testParseAnnotatedDocComment()
 {
     $docComment = '/**
         * @:Assert ("[[\'a\', \'b\', key=\'c\']]" false true)
         * Some comment about the implementation.
         * @:Cache (path = "/temp" lifetime = 30)
         * @param string $someValue
         * @return void
         */';
     $target = Annotation::TARGET_CLASS;
     $targetLocation = "";
     $annotationParser = new AnnotationParser();
     $annotationParser->setAnnotationPrefix("@:");
     $annotationParser->setAnnotationWhitelist(["Cache", "Assert"]);
     $annotations = $annotationParser->parse($target, $targetLocation, $docComment);
     $this->assertInternalType("array", $annotations);
     $this->assertEquals(2, count($annotations));
     $annotation_1 = array_pop($annotations);
     $this->assertEquals($target, $annotation_1->getTarget());
     $this->assertEquals($targetLocation, $annotation_1->getTargetLocation());
     $this->assertEquals("Cache", $annotation_1->getName());
     $this->assertEquals(["path" => "/temp", "lifetime" => 30], $annotation_1->getValues());
     $annotation_2 = array_pop($annotations);
     $this->assertEquals($target, $annotation_1->getTarget());
     $this->assertEquals($targetLocation, $annotation_1->getTargetLocation());
     $this->assertEquals("Assert", $annotation_2->getName());
     $this->assertEquals([0 => ['a', 'b', 'key' => 'c'], 1 => false, 2 => true], $annotation_2->getValues());
 }
 /**
  * Parse the doc comments annotations.
  * @param AnnotationReaderResult $result
  * @param integer $target
  * @param string $targetLocation
  * @param string $docComment
  * @return \Brickoo\Component\Annotation\AnnotationReflectionClassReader
  */
 private function parseAnnotations(AnnotationReaderResult $result, $target, $targetLocation, $docComment)
 {
     if ($annotations = $this->annotationParser->parse($target, $targetLocation, $docComment)) {
         $this->addResultAnnotations($result, $annotations);
     }
     return $this;
 }