Chris@16
|
1 <?php
|
Chris@16
|
2
|
Chris@16
|
3 /*
|
Chris@16
|
4 * This file is part of Psy Shell.
|
Chris@16
|
5 *
|
Chris@16
|
6 * (c) 2012-2018 Justin Hileman
|
Chris@16
|
7 *
|
Chris@16
|
8 * For the full copyright and license information, please view the LICENSE
|
Chris@16
|
9 * file that was distributed with this source code.
|
Chris@16
|
10 */
|
Chris@16
|
11
|
Chris@16
|
12 namespace Psy\Test\Reflection;
|
Chris@16
|
13
|
Chris@16
|
14 use Psy\Reflection\ReflectionLanguageConstruct;
|
Chris@16
|
15
|
Chris@16
|
16 class ReflectionLanguageConstructTest extends \PHPUnit\Framework\TestCase
|
Chris@16
|
17 {
|
Chris@16
|
18 /**
|
Chris@16
|
19 * @dataProvider languageConstructs
|
Chris@16
|
20 */
|
Chris@16
|
21 public function testConstruction($keyword)
|
Chris@16
|
22 {
|
Chris@16
|
23 $refl = new ReflectionLanguageConstruct($keyword);
|
Chris@16
|
24 $this->assertEquals($keyword, $refl->getName());
|
Chris@16
|
25 $this->assertEquals($keyword, (string) $refl);
|
Chris@16
|
26 }
|
Chris@16
|
27
|
Chris@16
|
28 /**
|
Chris@16
|
29 * @dataProvider languageConstructs
|
Chris@16
|
30 */
|
Chris@16
|
31 public function testKnownLanguageConstructs($keyword)
|
Chris@16
|
32 {
|
Chris@16
|
33 $this->assertTrue(ReflectionLanguageConstruct::isLanguageConstruct($keyword));
|
Chris@16
|
34 }
|
Chris@16
|
35
|
Chris@16
|
36 /**
|
Chris@16
|
37 * @dataProvider languageConstructs
|
Chris@16
|
38 */
|
Chris@16
|
39 public function testFileName($keyword)
|
Chris@16
|
40 {
|
Chris@16
|
41 $refl = new ReflectionLanguageConstruct($keyword);
|
Chris@16
|
42 $this->assertFalse($refl->getFileName());
|
Chris@16
|
43 }
|
Chris@16
|
44
|
Chris@16
|
45 /**
|
Chris@16
|
46 * @dataProvider languageConstructs
|
Chris@16
|
47 */
|
Chris@16
|
48 public function testReturnsReference($keyword)
|
Chris@16
|
49 {
|
Chris@16
|
50 $refl = new ReflectionLanguageConstruct($keyword);
|
Chris@16
|
51 $this->assertFalse($refl->returnsReference());
|
Chris@16
|
52 }
|
Chris@16
|
53
|
Chris@16
|
54 /**
|
Chris@16
|
55 * @dataProvider languageConstructs
|
Chris@16
|
56 */
|
Chris@16
|
57 public function testGetParameters($keyword)
|
Chris@16
|
58 {
|
Chris@16
|
59 $refl = new ReflectionLanguageConstruct($keyword);
|
Chris@16
|
60 $this->assertNotEmpty($refl->getParameters());
|
Chris@16
|
61 }
|
Chris@16
|
62
|
Chris@16
|
63 /**
|
Chris@16
|
64 * @dataProvider languageConstructs
|
Chris@16
|
65 * @expectedException \RuntimeException
|
Chris@16
|
66 */
|
Chris@16
|
67 public function testExportThrows($keyword)
|
Chris@16
|
68 {
|
Chris@16
|
69 ReflectionLanguageConstruct::export($keyword);
|
Chris@16
|
70 }
|
Chris@16
|
71
|
Chris@16
|
72 public function languageConstructs()
|
Chris@16
|
73 {
|
Chris@16
|
74 return [
|
Chris@16
|
75 ['isset'],
|
Chris@16
|
76 ['unset'],
|
Chris@16
|
77 ['empty'],
|
Chris@16
|
78 ['echo'],
|
Chris@16
|
79 ['print'],
|
Chris@16
|
80 ['die'],
|
Chris@16
|
81 ['exit'],
|
Chris@16
|
82 ];
|
Chris@16
|
83 }
|
Chris@16
|
84
|
Chris@16
|
85 /**
|
Chris@16
|
86 * @dataProvider unknownLanguageConstructs
|
Chris@16
|
87 * @expectedException \InvalidArgumentException
|
Chris@16
|
88 */
|
Chris@16
|
89 public function testUnknownLanguageConstructsThrowExceptions($keyword)
|
Chris@16
|
90 {
|
Chris@16
|
91 new ReflectionLanguageConstruct($keyword);
|
Chris@16
|
92 }
|
Chris@16
|
93
|
Chris@16
|
94 public function unknownLanguageConstructs()
|
Chris@16
|
95 {
|
Chris@16
|
96 return [
|
Chris@16
|
97 ['async'],
|
Chris@16
|
98 ['await'],
|
Chris@16
|
99 ['comefrom'],
|
Chris@16
|
100 ];
|
Chris@16
|
101 }
|
Chris@16
|
102 }
|