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