103 lines
3.6 KiB
PHP
103 lines
3.6 KiB
PHP
<?php declare(strict_types=1);
|
|
|
|
/**
|
|
* @license Apache 2.0
|
|
*/
|
|
|
|
namespace OpenApi\Tests;
|
|
|
|
use OpenApi\Analysis;
|
|
use OpenApi\Context;
|
|
|
|
class AnalysisTest extends OpenApiTestCase
|
|
{
|
|
public function testRegisterProcessor()
|
|
{
|
|
$counter = 0;
|
|
$analysis = new Analysis([], new Context());
|
|
$analysis->process();
|
|
$this->assertSame(0, $counter);
|
|
$countProcessor = function (Analysis $a) use (&$counter) {
|
|
$counter++;
|
|
};
|
|
Analysis::registerProcessor($countProcessor);
|
|
$analysis->process();
|
|
$this->assertSame(1, $counter);
|
|
Analysis::unregisterProcessor($countProcessor);
|
|
$analysis->process();
|
|
$this->assertSame(1, $counter);
|
|
}
|
|
|
|
public function testGetSubclasses()
|
|
{
|
|
$analysis = $this->analysisFromFixtures([
|
|
'AnotherNamespace/Child.php',
|
|
'InheritProperties/GrandAncestor.php',
|
|
'InheritProperties/Ancestor.php',
|
|
]);
|
|
|
|
$this->assertCount(3, $analysis->classes, '3 classes should\'ve been detected');
|
|
|
|
$subclasses = $analysis->getSubClasses('\OpenApi\Tests\Fixtures\GrandAncestor');
|
|
$this->assertCount(2, $subclasses, 'GrandAncestor has 2 subclasses');
|
|
$this->assertSame(['\OpenApi\Tests\Fixtures\Ancestor', '\AnotherNamespace\Child'], array_keys($subclasses));
|
|
$this->assertSame(['\AnotherNamespace\Child'], array_keys($analysis->getSubClasses('\OpenApi\Tests\Fixtures\Ancestor')));
|
|
}
|
|
|
|
public function testGetAncestorClasses()
|
|
{
|
|
$analysis = $this->analysisFromFixtures([
|
|
'AnotherNamespace/Child.php',
|
|
'InheritProperties/GrandAncestor.php',
|
|
'InheritProperties/Ancestor.php',
|
|
]);
|
|
|
|
$this->assertCount(3, $analysis->classes, '3 classes should\'ve been detected');
|
|
|
|
$superclasses = $analysis->getSuperClasses('\AnotherNamespace\Child');
|
|
$this->assertCount(2, $superclasses, 'Child has a chain of 2 super classes');
|
|
$this->assertSame(['\OpenApi\Tests\Fixtures\Ancestor', '\OpenApi\Tests\Fixtures\GrandAncestor'], array_keys($superclasses));
|
|
$this->assertSame(['\OpenApi\Tests\Fixtures\GrandAncestor'], array_keys($analysis->getSuperClasses('\OpenApi\Tests\Fixtures\Ancestor')));
|
|
}
|
|
|
|
public function testGetInterfacesOfClass()
|
|
{
|
|
$analysis = $this->analysisFromFixtures([
|
|
'Parser/User.php',
|
|
'Parser/UserInterface.php',
|
|
'Parser/OtherInterface.php',
|
|
]);
|
|
|
|
$this->assertCount(1, $analysis->classes);
|
|
$this->assertCount(2, $analysis->interfaces);
|
|
|
|
$interfaces = $analysis->getInterfacesOfClass('\OpenApi\Tests\Fixtures\Parser\User');
|
|
$this->assertCount(2, $interfaces);
|
|
$this->assertSame([
|
|
'\OpenApi\Tests\Fixtures\Parser\UserInterface',
|
|
'\OpenApi\Tests\Fixtures\Parser\OtherInterface',
|
|
], array_keys($interfaces));
|
|
}
|
|
|
|
public function testGetTraitsOfClass()
|
|
{
|
|
$analysis = $this->analysisFromFixtures([
|
|
'Parser/User.php',
|
|
'Parser/HelloTrait.php',
|
|
'Parser/OtherTrait.php',
|
|
'Parser/AsTrait.php',
|
|
'Parser/StaleTrait.php',
|
|
]);
|
|
|
|
$this->assertCount(1, $analysis->classes);
|
|
$this->assertCount(4, $analysis->traits);
|
|
|
|
$traits = $analysis->getTraitsOfClass('\OpenApi\Tests\Fixtures\Parser\User');
|
|
$this->assertSame([
|
|
'\OpenApi\Tests\Fixtures\Parser\HelloTrait',
|
|
'\OpenApi\Tests\Fixtures\Parser\OtherTrait',
|
|
'\OpenApi\Tests\Fixtures\Parser\AsTrait',
|
|
], array_keys($traits));
|
|
}
|
|
}
|