/**
* Tests parsing class annotations
*
* @author Serghei Iakovlev <*****@*****.**>
* @since 2016-01-26
*/
public function testClassAnnotations()
{
$this->specify('Reflection does not parse annotations correctly', function () {
$reader = new Reader();
$reflection = new Reflection($reader->parse('TestClass'));
$methodsAnnotations = $reflection->getMethodsAnnotations();
expect(gettype($methodsAnnotations))->equals('array');
expect(get_class($methodsAnnotations['testMethod1']))->equals('Phalcon\\Annotations\\Collection');
$total = 0;
foreach ($methodsAnnotations as $method => $annotations) {
expect(gettype($method))->equals('string');
$number = 0;
foreach ($annotations as $annotation) {
expect(get_class($annotation))->equals('Phalcon\\Annotations\\Annotation');
$number++;
$total++;
}
expect($number > 0)->true();
}
expect($total)->equals(14);
/** @var \Phalcon\Annotations\Collection $annotations */
$annotations = $methodsAnnotations['testMethod1'];
expect($annotations->has('Simple'))->true();
expect($annotations->has('NoSimple'))->false();
$annotation = $annotations->get('Simple');
expect($annotation->getName())->equals('Simple');
expect($annotation->getArguments())->equals(null);
expect($annotation->numberArguments())->equals(0);
expect($annotation->hasArgument('none'))->false();
$annotation = $annotations->get('NamedMultipleParams');
expect($annotation->getName())->equals('NamedMultipleParams');
expect($annotation->numberArguments())->equals(2);
expect($annotation->getArguments())->equals(['first' => 'First', 'second' => 'Second']);
expect($annotation->hasArgument('first'))->true();
expect($annotation->getArgument('first'))->equals('First');
expect($annotation->hasArgument('none'))->false();
$propertiesAnnotations = $reflection->getPropertiesAnnotations();
expect(is_array($propertiesAnnotations))->true();
expect(get_class($propertiesAnnotations['testProp1']))->equals('Phalcon\\Annotations\\Collection');
$total = 0;
foreach ($propertiesAnnotations as $property => $annotations) {
expect(get_class($propertiesAnnotations['testProp1']))->equals('Phalcon\\Annotations\\Collection');
$number = 0;
foreach ($annotations as $annotation) {
expect(get_class($annotation))->equals('Phalcon\\Annotations\\Annotation');
$number++;
$total++;
}
expect($number > 0)->true();
}
expect($total)->equals(10);
});
}