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