ReflectionConstantTest.php
3.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<?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'],
];
}
}