nginxsonarrradarrplexorganizrdashboardapplication-dashboardmuximuxlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdallembycouchpotatonzbgetbookmark
		
		
		
		
			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']);
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								
							 |