96 lines
3.0 KiB
PHP
96 lines
3.0 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\Formatter;
|
|
|
|
use Psy\Formatter\SignatureFormatter;
|
|
use Psy\Reflection\ReflectionClassConstant;
|
|
use Psy\Reflection\ReflectionConstant_;
|
|
|
|
class SignatureFormatterTest extends \PHPUnit\Framework\TestCase
|
|
{
|
|
const FOO = 'foo value';
|
|
private static $bar = 'bar value';
|
|
|
|
private function someFakeMethod(array $one, $two = 'TWO', \Reflector $three = null)
|
|
{
|
|
}
|
|
|
|
/**
|
|
* @dataProvider signatureReflectors
|
|
*/
|
|
public function testFormat($reflector, $expected)
|
|
{
|
|
$this->assertSame($expected, \strip_tags(SignatureFormatter::format($reflector)));
|
|
}
|
|
|
|
public function signatureReflectors()
|
|
{
|
|
return [
|
|
[
|
|
new \ReflectionFunction('implode'),
|
|
\defined('HHVM_VERSION') ? 'function implode($arg1, $arg2 = null)' : 'function implode($glue, $pieces)',
|
|
],
|
|
[
|
|
ReflectionClassConstant::create($this, 'FOO'),
|
|
'const FOO = "foo value"',
|
|
],
|
|
[
|
|
new \ReflectionMethod($this, 'someFakeMethod'),
|
|
'private function someFakeMethod(array $one, $two = \'TWO\', Reflector $three = null)',
|
|
],
|
|
[
|
|
new \ReflectionProperty($this, 'bar'),
|
|
'private static $bar',
|
|
],
|
|
[
|
|
new \ReflectionClass('Psy\CodeCleaner\CodeCleanerPass'),
|
|
'abstract class Psy\CodeCleaner\CodeCleanerPass '
|
|
. 'extends PhpParser\NodeVisitorAbstract '
|
|
. 'implements PhpParser\NodeVisitor',
|
|
],
|
|
[
|
|
new \ReflectionFunction('array_chunk'),
|
|
'function array_chunk($arg, $size, $preserve_keys = unknown)',
|
|
],
|
|
[
|
|
new \ReflectionClass('Psy\Test\Formatter\Fixtures\BoringTrait'),
|
|
'trait Psy\Test\Formatter\Fixtures\BoringTrait',
|
|
],
|
|
[
|
|
new \ReflectionMethod('Psy\Test\Formatter\Fixtures\BoringTrait', 'boringMethod'),
|
|
'public function boringMethod($one = 1)',
|
|
],
|
|
[
|
|
new ReflectionConstant_('E_ERROR'),
|
|
'define("E_ERROR", 1)',
|
|
],
|
|
[
|
|
new ReflectionConstant_('PHP_VERSION'),
|
|
'define("PHP_VERSION", "' . PHP_VERSION . '")',
|
|
],
|
|
[
|
|
new ReflectionConstant_('__LINE__'),
|
|
'define("__LINE__", null)', // @todo show this as `unknown` in red or something?
|
|
],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @expectedException \InvalidArgumentException
|
|
*/
|
|
public function testSignatureFormatterThrowsUnknownReflectorExpeption()
|
|
{
|
|
$refl = $this->getMockBuilder('Reflector')->getMock();
|
|
SignatureFormatter::format($refl);
|
|
}
|
|
}
|