103 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			103 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
|   | <?php | ||
|  | 
 | ||
|  | /* | ||
|  |  * This file is part of Psy Shell. | ||
|  |  * | ||
|  |  * (c) 2012-2018 Justin Hileman | ||
|  |  * | ||
|  |  * For the full copyright and license information, please view the LICENSE | ||
|  |  * file that was distributed with this source code. | ||
|  |  */ | ||
|  | 
 | ||
|  | namespace Psy\Test\Reflection; | ||
|  | 
 | ||
|  | use Psy\Reflection\ReflectionLanguageConstruct; | ||
|  | 
 | ||
|  | class ReflectionLanguageConstructTest extends \PHPUnit\Framework\TestCase | ||
|  | { | ||
|  |     /** | ||
|  |      * @dataProvider languageConstructs | ||
|  |      */ | ||
|  |     public function testConstruction($keyword) | ||
|  |     { | ||
|  |         $refl = new ReflectionLanguageConstruct($keyword); | ||
|  |         $this->assertEquals($keyword, $refl->getName()); | ||
|  |         $this->assertEquals($keyword, (string) $refl); | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @dataProvider languageConstructs | ||
|  |      */ | ||
|  |     public function testKnownLanguageConstructs($keyword) | ||
|  |     { | ||
|  |         $this->assertTrue(ReflectionLanguageConstruct::isLanguageConstruct($keyword)); | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @dataProvider languageConstructs | ||
|  |      */ | ||
|  |     public function testFileName($keyword) | ||
|  |     { | ||
|  |         $refl = new ReflectionLanguageConstruct($keyword); | ||
|  |         $this->assertFalse($refl->getFileName()); | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @dataProvider languageConstructs | ||
|  |      */ | ||
|  |     public function testReturnsReference($keyword) | ||
|  |     { | ||
|  |         $refl = new ReflectionLanguageConstruct($keyword); | ||
|  |         $this->assertFalse($refl->returnsReference()); | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @dataProvider languageConstructs | ||
|  |      */ | ||
|  |     public function testGetParameters($keyword) | ||
|  |     { | ||
|  |         $refl = new ReflectionLanguageConstruct($keyword); | ||
|  |         $this->assertNotEmpty($refl->getParameters()); | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @dataProvider languageConstructs | ||
|  |      * @expectedException \RuntimeException | ||
|  |      */ | ||
|  |     public function testExportThrows($keyword) | ||
|  |     { | ||
|  |         ReflectionLanguageConstruct::export($keyword); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function languageConstructs() | ||
|  |     { | ||
|  |         return [ | ||
|  |             ['isset'], | ||
|  |             ['unset'], | ||
|  |             ['empty'], | ||
|  |             ['echo'], | ||
|  |             ['print'], | ||
|  |             ['die'], | ||
|  |             ['exit'], | ||
|  |         ]; | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @dataProvider unknownLanguageConstructs | ||
|  |      * @expectedException \InvalidArgumentException | ||
|  |      */ | ||
|  |     public function testUnknownLanguageConstructsThrowExceptions($keyword) | ||
|  |     { | ||
|  |         new ReflectionLanguageConstruct($keyword); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function unknownLanguageConstructs() | ||
|  |     { | ||
|  |         return [ | ||
|  |             ['async'], | ||
|  |             ['await'], | ||
|  |             ['comefrom'], | ||
|  |         ]; | ||
|  |     } | ||
|  | } |