58 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			58 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
|  | <?php declare(strict_types=1); | ||
|  | 
 | ||
|  | /** | ||
|  |  * @license Apache 2.0 | ||
|  |  */ | ||
|  | 
 | ||
|  | namespace OpenApi\Tests\Annotations; | ||
|  | 
 | ||
|  | use OpenApi\Tests\OpenApiTestCase; | ||
|  | 
 | ||
|  | /** | ||
|  |  * Test if the annotation class nesting parent/child relations are coherent. | ||
|  |  */ | ||
|  | class ValidateRelationsTest extends OpenApiTestCase | ||
|  | { | ||
|  |     /** | ||
|  |      * @dataProvider allAnnotationClasses | ||
|  |      * | ||
|  |      * @param string $class | ||
|  |      */ | ||
|  |     public function testAncestors($class) | ||
|  |     { | ||
|  |         foreach ($class::$_parents as $parent) { | ||
|  |             $found = false; | ||
|  |             foreach (array_keys($parent::$_nested) as $nestedClass) { | ||
|  |                 if ($nestedClass === $class) { | ||
|  |                     $found = true; | ||
|  |                     break; | ||
|  |                 } | ||
|  |             } | ||
|  |             if ($found === false) { | ||
|  |                 $this->fail($class . ' not found in ' . $parent . "::\$_nested. Found:\n  " . implode("\n  ", array_keys($parent::$_nested))); | ||
|  |             } | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @dataProvider allAnnotationClasses | ||
|  |      * | ||
|  |      * @param string $class | ||
|  |      */ | ||
|  |     public function testNested($class) | ||
|  |     { | ||
|  |         foreach (array_keys($class::$_nested) as $nestedClass) { | ||
|  |             $found = false; | ||
|  |             foreach ($nestedClass::$_parents as $parent) { | ||
|  |                 if ($parent === $class) { | ||
|  |                     $found = true; | ||
|  |                     break; | ||
|  |                 } | ||
|  |             } | ||
|  |             if ($found === false) { | ||
|  |                 $this->fail($class . ' not found in ' . $nestedClass . "::\$parent. Found:\n  " . implode("\n  ", $nestedClass::$_parents)); | ||
|  |             } | ||
|  |         } | ||
|  |     } | ||
|  | } |