Chris@13
|
1 <?php
|
Chris@13
|
2
|
Chris@13
|
3 /*
|
Chris@13
|
4 * This file is part of Psy Shell.
|
Chris@13
|
5 *
|
Chris@13
|
6 * (c) 2012-2018 Justin Hileman
|
Chris@13
|
7 *
|
Chris@13
|
8 * For the full copyright and license information, please view the LICENSE
|
Chris@13
|
9 * file that was distributed with this source code.
|
Chris@13
|
10 */
|
Chris@13
|
11
|
Chris@13
|
12 namespace Psy\Test\CodeCleaner;
|
Chris@13
|
13
|
Chris@13
|
14 use Psy\CodeCleaner\ValidFunctionNamePass;
|
Chris@13
|
15
|
Chris@13
|
16 class ValidFunctionNamePassTest extends CodeCleanerTestCase
|
Chris@13
|
17 {
|
Chris@13
|
18 public function setUp()
|
Chris@13
|
19 {
|
Chris@13
|
20 $this->setPass(new ValidFunctionNamePass());
|
Chris@13
|
21 }
|
Chris@13
|
22
|
Chris@13
|
23 /**
|
Chris@13
|
24 * @dataProvider getInvalidFunctions
|
Chris@13
|
25 * @expectedException \Psy\Exception\FatalErrorException
|
Chris@13
|
26 */
|
Chris@13
|
27 public function testProcessInvalidFunctionCallsAndDeclarations($code)
|
Chris@13
|
28 {
|
Chris@13
|
29 $this->parseAndTraverse($code);
|
Chris@13
|
30 }
|
Chris@13
|
31
|
Chris@13
|
32 public function getInvalidFunctions()
|
Chris@13
|
33 {
|
Chris@13
|
34 return [
|
Chris@13
|
35 // function declarations
|
Chris@13
|
36 ['function array_merge() {}'],
|
Chris@13
|
37 ['function Array_Merge() {}'],
|
Chris@13
|
38 ['
|
Chris@13
|
39 function psy_test_codecleaner_validfunctionnamepass_alpha() {}
|
Chris@13
|
40 function psy_test_codecleaner_validfunctionnamepass_alpha() {}
|
Chris@13
|
41 '],
|
Chris@13
|
42 ['
|
Chris@13
|
43 namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
|
Chris@13
|
44 function beta() {}
|
Chris@13
|
45 }
|
Chris@13
|
46 namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
|
Chris@13
|
47 function beta() {}
|
Chris@13
|
48 }
|
Chris@13
|
49 '],
|
Chris@13
|
50
|
Chris@13
|
51 // function calls
|
Chris@13
|
52 ['psy_test_codecleaner_validfunctionnamepass_gamma()'],
|
Chris@13
|
53 ['
|
Chris@13
|
54 namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
|
Chris@13
|
55 delta();
|
Chris@13
|
56 }
|
Chris@13
|
57 '],
|
Chris@13
|
58
|
Chris@13
|
59 // recursion
|
Chris@13
|
60 ['function a() { a(); } function a() {}'],
|
Chris@13
|
61 ];
|
Chris@13
|
62 }
|
Chris@13
|
63
|
Chris@13
|
64 /**
|
Chris@13
|
65 * @dataProvider getValidFunctions
|
Chris@13
|
66 */
|
Chris@13
|
67 public function testProcessValidFunctionCallsAndDeclarations($code)
|
Chris@13
|
68 {
|
Chris@13
|
69 $this->parseAndTraverse($code);
|
Chris@13
|
70 $this->assertTrue(true);
|
Chris@13
|
71 }
|
Chris@13
|
72
|
Chris@13
|
73 public function getValidFunctions()
|
Chris@13
|
74 {
|
Chris@13
|
75 return [
|
Chris@13
|
76 ['function psy_test_codecleaner_validfunctionnamepass_epsilon() {}'],
|
Chris@13
|
77 ['
|
Chris@13
|
78 namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
|
Chris@13
|
79 function zeta() {}
|
Chris@13
|
80 }
|
Chris@13
|
81 '],
|
Chris@13
|
82 ['
|
Chris@13
|
83 namespace {
|
Chris@13
|
84 function psy_test_codecleaner_validfunctionnamepass_eta() {}
|
Chris@13
|
85 }
|
Chris@13
|
86 namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
|
Chris@13
|
87 function psy_test_codecleaner_validfunctionnamepass_eta() {}
|
Chris@13
|
88 }
|
Chris@13
|
89 '],
|
Chris@13
|
90 ['
|
Chris@13
|
91 namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
|
Chris@13
|
92 function psy_test_codecleaner_validfunctionnamepass_eta() {}
|
Chris@13
|
93 }
|
Chris@13
|
94 namespace {
|
Chris@13
|
95 function psy_test_codecleaner_validfunctionnamepass_eta() {}
|
Chris@13
|
96 }
|
Chris@13
|
97 '],
|
Chris@13
|
98 ['
|
Chris@13
|
99 namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
|
Chris@13
|
100 function array_merge() {}
|
Chris@13
|
101 }
|
Chris@13
|
102 '],
|
Chris@13
|
103
|
Chris@13
|
104 // function calls
|
Chris@13
|
105 ['array_merge();'],
|
Chris@13
|
106 ['
|
Chris@13
|
107 namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
|
Chris@13
|
108 function theta() {}
|
Chris@13
|
109 }
|
Chris@13
|
110 namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
|
Chris@13
|
111 theta();
|
Chris@13
|
112 }
|
Chris@13
|
113 '],
|
Chris@13
|
114 // closures
|
Chris@13
|
115 ['$test = function(){};$test()'],
|
Chris@13
|
116 ['
|
Chris@13
|
117 namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
|
Chris@13
|
118 function theta() {}
|
Chris@13
|
119 }
|
Chris@13
|
120 namespace {
|
Chris@13
|
121 Psy\\Test\\CodeCleaner\\ValidFunctionNamePass\\theta();
|
Chris@13
|
122 }
|
Chris@13
|
123 '],
|
Chris@13
|
124
|
Chris@13
|
125 // recursion
|
Chris@13
|
126 ['function a() { a(); }'],
|
Chris@13
|
127
|
Chris@13
|
128 // conditionally defined functions
|
Chris@13
|
129 ['
|
Chris@13
|
130 function a() {}
|
Chris@13
|
131 if (false) {
|
Chris@13
|
132 function a() {}
|
Chris@13
|
133 }
|
Chris@13
|
134 '],
|
Chris@13
|
135 ['
|
Chris@13
|
136 function a() {}
|
Chris@13
|
137 if (true) {
|
Chris@13
|
138 function a() {}
|
Chris@13
|
139 } else if (false) {
|
Chris@13
|
140 function a() {}
|
Chris@13
|
141 } else {
|
Chris@13
|
142 function a() {}
|
Chris@13
|
143 }
|
Chris@13
|
144 '],
|
Chris@13
|
145 // ewww
|
Chris@13
|
146 ['
|
Chris@13
|
147 function a() {}
|
Chris@13
|
148 if (true):
|
Chris@13
|
149 function a() {}
|
Chris@13
|
150 elseif (false):
|
Chris@13
|
151 function a() {}
|
Chris@13
|
152 else:
|
Chris@13
|
153 function a() {}
|
Chris@13
|
154 endif;
|
Chris@13
|
155 '],
|
Chris@13
|
156 ['
|
Chris@13
|
157 function a() {}
|
Chris@13
|
158 while (false) { function a() {} }
|
Chris@13
|
159 '],
|
Chris@13
|
160 ['
|
Chris@13
|
161 function a() {}
|
Chris@13
|
162 do { function a() {} } while (false);
|
Chris@13
|
163 '],
|
Chris@13
|
164 ['
|
Chris@13
|
165 function a() {}
|
Chris@13
|
166 switch (1) {
|
Chris@13
|
167 case 0:
|
Chris@13
|
168 function a() {}
|
Chris@13
|
169 break;
|
Chris@13
|
170 case 1:
|
Chris@13
|
171 function a() {}
|
Chris@13
|
172 break;
|
Chris@13
|
173 case 2:
|
Chris@13
|
174 function a() {}
|
Chris@13
|
175 break;
|
Chris@13
|
176 }
|
Chris@13
|
177 '],
|
Chris@13
|
178 ];
|
Chris@13
|
179 }
|
Chris@13
|
180 }
|