4 * This file is part of Psy Shell.
6 * (c) 2012-2017 Justin Hileman
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
12 namespace Psy\Test\CodeCleaner;
14 use Psy\CodeCleaner\ValidFunctionNamePass;
16 class ValidFunctionNamePassTest extends CodeCleanerTestCase
18 public function setUp()
20 $this->setPass(new ValidFunctionNamePass());
24 * @dataProvider getInvalidFunctions
25 * @expectedException \Psy\Exception\FatalErrorException
27 public function testProcessInvalidFunctionCallsAndDeclarations($code)
29 $stmts = $this->parse($code);
30 $this->traverse($stmts);
33 public function getInvalidFunctions()
36 // function declarations
37 array('function array_merge() {}'),
38 array('function Array_Merge() {}'),
40 function psy_test_codecleaner_validfunctionnamepass_alpha() {}
41 function psy_test_codecleaner_validfunctionnamepass_alpha() {}
44 namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
47 namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
53 array('psy_test_codecleaner_validfunctionnamepass_gamma()'),
55 namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
61 array('function a() { a(); } function a() {}'),
66 * @dataProvider getValidFunctions
68 public function testProcessValidFunctionCallsAndDeclarations($code)
70 $stmts = $this->parse($code);
71 $this->traverse($stmts);
73 // @todo a better thing to assert here?
74 $this->assertTrue(true);
77 public function getValidFunctions()
80 array('function psy_test_codecleaner_validfunctionnamepass_epsilon() {}'),
82 namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
88 function psy_test_codecleaner_validfunctionnamepass_eta() {}
90 namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
91 function psy_test_codecleaner_validfunctionnamepass_eta() {}
95 namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
96 function psy_test_codecleaner_validfunctionnamepass_eta() {}
99 function psy_test_codecleaner_validfunctionnamepass_eta() {}
103 namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
104 function array_merge() {}
109 array('array_merge();'),
111 namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
114 namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
119 array('$test = function(){};$test()'),
121 namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
125 Psy\\Test\\CodeCleaner\\ValidFunctionNamePass\\theta();
130 array('function a() { a(); }'),
132 // conditionally defined functions
162 while (false) { function a() {} }
166 do { function a() {} } while (false);