gnu-social/vendor/psy/psysh/test/Reflection/ReflectionConstantTest.php
2020-08-07 23:42:38 +01:00

115 lines
3.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\ReflectionConstant_;
\define('Psy\\Test\\Reflection\\SOME_CONSTANT', 'yep');
class ReflectionConstantTest extends \PHPUnit\Framework\TestCase
{
public function testConstruction()
{
$refl = new ReflectionConstant_('Psy\\Test\\Reflection\\SOME_CONSTANT');
$this->assertFalse($refl->getDocComment());
$this->assertEquals('Psy\\Test\\Reflection\\SOME_CONSTANT', $refl->getName());
$this->assertEquals('Psy\\Test\\Reflection', $refl->getNamespaceName());
$this->assertEquals('yep', $refl->getValue());
$this->assertTrue($refl->inNamespace());
$this->assertEquals('Psy\\Test\\Reflection\\SOME_CONSTANT', (string) $refl);
$this->assertNull($refl->getFileName());
}
public function testBuiltInConstant()
{
$refl = new ReflectionConstant_('PHP_VERSION');
$this->assertEquals('PHP_VERSION', $refl->getName());
$this->assertEquals('PHP_VERSION', (string) $refl);
$this->assertEquals(PHP_VERSION, $refl->getValue());
$this->assertFalse($refl->inNamespace());
$this->assertSame('', $refl->getNamespaceName());
}
/**
* @dataProvider magicConstants
*/
public function testIsMagicConstant($name, $is)
{
$this->assertEquals($is, ReflectionConstant_::isMagicConstant($name));
}
public function magicConstants()
{
return [
['__LINE__', true],
['__FILE__', true],
['__DIR__', true],
['__FUNCTION__', true],
['__CLASS__', true],
['__TRAIT__', true],
['__METHOD__', true],
['__NAMESPACE__', true],
['__COMPILER_HALT_OFFSET__', true],
['PHP_VERSION', false],
['PHP_EOL', false],
['Psy\\Test\\Reflection\\SOME_CONSTANT', false],
['What if it isn\'t even a valid constant name?', false],
];
}
/**
* @expectedException \InvalidArgumentException
*/
public function testUnknownConstantThrowsException()
{
new ReflectionConstant_('UNKNOWN_CONSTANT');
}
public function testExport()
{
$ret = ReflectionConstant_::export('Psy\\Test\\Reflection\\SOME_CONSTANT', true);
$this->assertEquals($ret, 'Constant [ string Psy\\Test\\Reflection\\SOME_CONSTANT ] { yep }');
}
public function testExportOutput()
{
$this->expectOutputString("Constant [ string Psy\\Test\\Reflection\\SOME_CONSTANT ] { yep }\n");
ReflectionConstant_::export('Psy\\Test\\Reflection\\SOME_CONSTANT', false);
}
public function testGetFileName()
{
$refl = new ReflectionConstant_('Psy\\Test\\Reflection\\SOME_CONSTANT');
$this->assertNull($refl->getFileName());
}
/**
* @expectedException \RuntimeException
* @dataProvider notYetImplemented
*/
public function testNotYetImplemented($method)
{
$refl = new ReflectionConstant_('Psy\\Test\\Reflection\\SOME_CONSTANT');
$refl->$method();
}
public function notYetImplemented()
{
return [
['getStartLine'],
['getEndLine'],
];
}
}