protected function setClassAnnotations(annotations\extractor $extractor)
{
$test = $this;
$extractor->resetHandlers()->setHandler('ignore', function ($value) use($test) {
$test->ignore(annotations\extractor::toBoolean($value));
})->setHandler('tags', function ($value) use($test) {
$test->setTags(annotations\extractor::toArray($value));
})->setHandler('namespace', function ($value) use($test) {
$test->setTestNamespace($value === true ? static::defaultNamespace : $value);
})->setHandler('methodPrefix', function ($value) use($test) {
$test->setTestMethodPrefix($value === true ? static::defaultMethodPrefix : $value);
})->setHandler('maxChildrenNumber', function ($value) use($test) {
$test->setMaxChildrenNumber($value);
})->setHandler('engine', function ($value) use($test) {
$test->setClassEngine($value);
})->setHandler('hasVoidMethods', function ($value) use($test) {
$test->classHasVoidMethods();
})->setHandler('hasNotVoidMethods', function ($value) use($test) {
$test->classHasNotVoidMethods();
})->setHandler('php', function ($value) use($test) {
$value = annotations\extractor::toArray($value);
if (isset($value[0]) === true) {
$operator = null;
if (isset($value[1]) === false) {
$version = $value[0];
} else {
$version = $value[1];
switch ($value[0]) {
case '<':
case '<=':
case '=':
case '==':
case '>=':
case '>':
$operator = $value[0];
}
}
$test->addClassPhpVersion($version, $operator);
}
})->setHandler('extensions', function ($value) use($test) {
foreach (annotations\extractor::toArray($value) as $mandatoryExtension) {
$test->addMandatoryClassExtension($mandatoryExtension);
}
});
return $this;
}