sonarrradarrplexorganizrnginxdashboardmuximuxlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdallembycouchpotatonzbgetbookmarkapplication-dashboard
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							169 lines
						
					
					
						
							5.3 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							169 lines
						
					
					
						
							5.3 KiB
						
					
					
				| <?php | |
| /* | |
|  * This file is part of php-token-stream. | |
|  * | |
|  * (c) Sebastian Bergmann <sebastian@phpunit.de> | |
|  * | |
|  * For the full copyright and license information, please view the LICENSE | |
|  * file that was distributed with this source code. | |
|  */ | |
| 
 | |
| use PHPUnit\Framework\TestCase; | |
| 
 | |
| class PHP_Token_ClassTest extends TestCase | |
| { | |
|     /** | |
|      * @var PHP_Token_CLASS | |
|      */ | |
|     private $class; | |
| 
 | |
|     /** | |
|      * @var PHP_Token_FUNCTION | |
|      */ | |
|     private $function; | |
| 
 | |
|     protected function setUp() | |
|     { | |
|         $ts = new PHP_Token_Stream(TEST_FILES_PATH . 'source2.php'); | |
| 
 | |
|         foreach ($ts as $token) { | |
|             if ($token instanceof PHP_Token_CLASS) { | |
|                 $this->class = $token; | |
|             } | |
| 
 | |
|             if ($token instanceof PHP_Token_FUNCTION) { | |
|                 $this->function = $token; | |
|                 break; | |
|             } | |
|         } | |
|     } | |
| 
 | |
|     /** | |
|      * @covers PHP_Token_CLASS::getKeywords | |
|      */ | |
|     public function testGetClassKeywords() | |
|     { | |
|         $this->assertEquals('abstract', $this->class->getKeywords()); | |
|     } | |
| 
 | |
|     /** | |
|      * @covers PHP_Token_FUNCTION::getKeywords | |
|      */ | |
|     public function testGetFunctionKeywords() | |
|     { | |
|         $this->assertEquals('abstract,static', $this->function->getKeywords()); | |
|     } | |
| 
 | |
|     /** | |
|      * @covers PHP_Token_FUNCTION::getVisibility | |
|      */ | |
|     public function testGetFunctionVisibility() | |
|     { | |
|         $this->assertEquals('public', $this->function->getVisibility()); | |
|     } | |
| 
 | |
|     public function testIssue19() | |
|     { | |
|         $ts = new PHP_Token_Stream(TEST_FILES_PATH . 'issue19.php'); | |
| 
 | |
|         foreach ($ts as $token) { | |
|             if ($token instanceof PHP_Token_CLASS) { | |
|                 $this->assertFalse($token->hasInterfaces()); | |
|             } | |
|         } | |
|     } | |
| 
 | |
|     public function testIssue30() | |
|     { | |
|         $ts = new PHP_Token_Stream(TEST_FILES_PATH . 'issue30.php'); | |
|         $this->assertCount(1, $ts->getClasses()); | |
|     } | |
| 
 | |
|     public function testAnonymousClassesAreHandledCorrectly() | |
|     { | |
|         $ts = new PHP_Token_Stream(TEST_FILES_PATH . 'class_with_method_that_declares_anonymous_class.php'); | |
| 
 | |
|         $classes = $ts->getClasses(); | |
| 
 | |
|         $this->assertEquals( | |
|             [ | |
|                 'class_with_method_that_declares_anonymous_class', | |
|                 'AnonymousClass:9#31', | |
|                 'AnonymousClass:10#55', | |
|                 'AnonymousClass:11#75', | |
|                 'AnonymousClass:12#91', | |
|                 'AnonymousClass:13#107' | |
|             ], | |
|             array_keys($classes) | |
|         ); | |
|     } | |
| 
 | |
|     /** | |
|      * @ticket https://github.com/sebastianbergmann/php-token-stream/issues/52 | |
|      */ | |
|     public function testAnonymousClassesAreHandledCorrectly2() | |
|     { | |
|         $ts = new PHP_Token_Stream(TEST_FILES_PATH . 'class_with_method_that_declares_anonymous_class2.php'); | |
| 
 | |
|         $classes = $ts->getClasses(); | |
| 
 | |
|         $this->assertEquals(['Test', 'AnonymousClass:4#23'], array_keys($classes)); | |
|         $this->assertEquals(['methodOne', 'methodTwo'], array_keys($classes['Test']['methods'])); | |
| 
 | |
|         $this->assertEmpty($ts->getFunctions()); | |
|     } | |
| 
 | |
|     public function testImportedFunctionsAreHandledCorrectly() | |
|     { | |
|         $ts = new PHP_Token_Stream(TEST_FILES_PATH . 'classUsesNamespacedFunction.php'); | |
| 
 | |
|         $this->assertEmpty($ts->getFunctions()); | |
|         $this->assertCount(1, $ts->getClasses()); | |
|     } | |
| 
 | |
|     /** | |
|      * @ticket https://github.com/sebastianbergmann/php-code-coverage/issues/543 | |
|      */ | |
|     public function testClassWithMultipleAnonymousClassesAndFunctionsIsHandledCorrectly() | |
|     { | |
|         $ts = new PHP_Token_Stream(TEST_FILES_PATH . 'class_with_multiple_anonymous_classes_and_functions.php'); | |
| 
 | |
|         $classes = $ts->getClasses(); | |
| 
 | |
|         $this->assertArrayHasKey('class_with_multiple_anonymous_classes_and_functions', $classes); | |
|         $this->assertArrayHasKey('AnonymousClass:6#23', $classes); | |
|         $this->assertArrayHasKey('AnonymousClass:12#53', $classes); | |
|         $this->assertArrayHasKey('m', $classes['class_with_multiple_anonymous_classes_and_functions']['methods']); | |
|         $this->assertArrayHasKey('anonymousFunction:18#81', $classes['class_with_multiple_anonymous_classes_and_functions']['methods']); | |
|         $this->assertArrayHasKey('anonymousFunction:22#108', $classes['class_with_multiple_anonymous_classes_and_functions']['methods']); | |
|     } | |
| 
 | |
|     /** | |
|      * @ticket https://github.com/sebastianbergmann/php-token-stream/issues/68 | |
|      */ | |
|     public function testClassWithMethodNamedEmptyIsHandledCorrectly() | |
|     { | |
|         $ts = new PHP_Token_Stream(TEST_FILES_PATH . 'class_with_method_named_empty.php'); | |
| 
 | |
|         $classes = $ts->getClasses(); | |
| 
 | |
|         $this->assertArrayHasKey('class_with_method_named_empty', $classes); | |
|         $this->assertArrayHasKey('empty', $classes['class_with_method_named_empty']['methods']); | |
|     } | |
| 
 | |
|     /** | |
|      * @ticket https://github.com/sebastianbergmann/php-code-coverage/issues/424 | |
|      */ | |
|     public function testSomething() | |
|     { | |
|         $ts = new PHP_Token_Stream(TEST_FILES_PATH . 'php-code-coverage-issue-424.php'); | |
| 
 | |
|         $classes = $ts->getClasses(); | |
| 
 | |
|         $this->assertSame(5, $classes['Example']['methods']['even']['startLine']); | |
|         $this->assertSame(12, $classes['Example']['methods']['even']['endLine']); | |
| 
 | |
|         $this->assertSame(7, $classes['Example']['methods']['anonymousFunction:7#28']['startLine']); | |
|         $this->assertSame(9, $classes['Example']['methods']['anonymousFunction:7#28']['endLine']); | |
|     } | |
| }
 | |
| 
 |