123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- <?php
- /*
- * This file is part of Psy Shell.
- *
- * (c) 2012-2017 Justin Hileman
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Psy\Test\CodeCleaner;
- use Psy\CodeCleaner\ValidFunctionNamePass;
- class ValidFunctionNamePassTest extends CodeCleanerTestCase
- {
- public function setUp()
- {
- $this->setPass(new ValidFunctionNamePass());
- }
- /**
- * @dataProvider getInvalidFunctions
- * @expectedException \Psy\Exception\FatalErrorException
- */
- public function testProcessInvalidFunctionCallsAndDeclarations($code)
- {
- $stmts = $this->parse($code);
- $this->traverse($stmts);
- }
- public function getInvalidFunctions()
- {
- return array(
- // function declarations
- array('function array_merge() {}'),
- array('function Array_Merge() {}'),
- array('
- function psy_test_codecleaner_validfunctionnamepass_alpha() {}
- function psy_test_codecleaner_validfunctionnamepass_alpha() {}
- '),
- array('
- namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
- function beta() {}
- }
- namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
- function beta() {}
- }
- '),
- // function calls
- array('psy_test_codecleaner_validfunctionnamepass_gamma()'),
- array('
- namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
- delta();
- }
- '),
- // recursion
- array('function a() { a(); } function a() {}'),
- );
- }
- /**
- * @dataProvider getValidFunctions
- */
- public function testProcessValidFunctionCallsAndDeclarations($code)
- {
- $stmts = $this->parse($code);
- $this->traverse($stmts);
- }
- public function getValidFunctions()
- {
- return array(
- array('function psy_test_codecleaner_validfunctionnamepass_epsilon() {}'),
- array('
- namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
- function zeta() {}
- }
- '),
- array('
- namespace {
- function psy_test_codecleaner_validfunctionnamepass_eta() {}
- }
- namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
- function psy_test_codecleaner_validfunctionnamepass_eta() {}
- }
- '),
- array('
- namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
- function psy_test_codecleaner_validfunctionnamepass_eta() {}
- }
- namespace {
- function psy_test_codecleaner_validfunctionnamepass_eta() {}
- }
- '),
- array('
- namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
- function array_merge() {}
- }
- '),
- // function calls
- array('array_merge();'),
- array('
- namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
- function theta() {}
- }
- namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
- theta();
- }
- '),
- // closures
- array('$test = function(){};$test()'),
- array('
- namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
- function theta() {}
- }
- namespace {
- Psy\\Test\\CodeCleaner\\ValidFunctionNamePass\\theta();
- }
- '),
- // recursion
- array('function a() { a(); }'),
- // conditionally defined functions
- array('
- function a() {}
- if (false) {
- function a() {}
- }
- '),
- array('
- function a() {}
- if (true) {
- function a() {}
- } else if (false) {
- function a() {}
- } else {
- function a() {}
- }
- '),
- // ewww
- array('
- function a() {}
- if (true):
- function a() {}
- elseif (false):
- function a() {}
- else:
- function a() {}
- endif;
- '),
- array('
- function a() {}
- while (false) { function a() {} }
- '),
- array('
- function a() {}
- do { function a() {} } while (false);
- '),
- array('
- function a() {}
- switch (1) {
- case 0:
- function a() {}
- break;
- case 1:
- function a() {}
- break;
- case 2:
- function a() {}
- break;
- }
- '),
- );
- }
- }
|