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)); | ||
|  |     } | ||
|  | } |