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'],
|
||
|
];
|
||
|
}
|
||
|
}
|