4 * This file is part of Psy Shell.
6 * (c) 2012-2018 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 $this->parseAndTraverse($code);
32 public function getInvalidFunctions()
35 // function declarations
36 ['function array_merge() {}'],
37 ['function Array_Merge() {}'],
39 function psy_test_codecleaner_validfunctionnamepass_alpha() {}
40 function psy_test_codecleaner_validfunctionnamepass_alpha() {}
43 namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
46 namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
52 ['psy_test_codecleaner_validfunctionnamepass_gamma()'],
54 namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
60 ['function a() { a(); } function a() {}'],
65 * @dataProvider getValidFunctions
67 public function testProcessValidFunctionCallsAndDeclarations($code)
69 $this->parseAndTraverse($code);
70 $this->assertTrue(true);
73 public function getValidFunctions()
76 ['function psy_test_codecleaner_validfunctionnamepass_epsilon() {}'],
78 namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
84 function psy_test_codecleaner_validfunctionnamepass_eta() {}
86 namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
87 function psy_test_codecleaner_validfunctionnamepass_eta() {}
91 namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
92 function psy_test_codecleaner_validfunctionnamepass_eta() {}
95 function psy_test_codecleaner_validfunctionnamepass_eta() {}
99 namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
100 function array_merge() {}
107 namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
110 namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
115 ['$test = function(){};$test()'],
117 namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
121 Psy\\Test\\CodeCleaner\\ValidFunctionNamePass\\theta();
126 ['function a() { a(); }'],
128 // conditionally defined functions
158 while (false) { function a() {} }
162 do { function a() {} } while (false);