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\StaticConstructorPass;
16 class StaticConstructorPassTest extends CodeCleanerTestCase
18 protected function setUp()
20 $this->setPass(new StaticConstructorPass());
24 * @dataProvider invalidStatements
25 * @expectedException \Psy\Exception\FatalErrorException
27 public function testProcessInvalidStatement($code)
29 $stmts = $this->parse($code);
30 $this->traverser->traverse($stmts);
34 * @dataProvider invalidParserStatements
35 * @expectedException \Psy\Exception\ParseErrorException
37 public function testProcessInvalidStatementCatchedByParser($code)
39 $stmts = $this->parse($code);
40 $this->traverser->traverse($stmts);
43 public function invalidStatements()
46 array('class A { public static function A() {}}'),
47 array('class A { private static function A() {}}'),
50 if (version_compare(PHP_VERSION, '5.3.3', '<')) {
51 $statements[] = array('namespace B; class A { private static function A() {}}');
57 public function invalidParserStatements()
60 array('class A { public static function __construct() {}}'),
61 array('class A { private static function __construct() {}}'),
62 array('class A { private static function __construct() {} public function A() {}}'),
63 array('namespace B; class A { private static function __construct() {}}'),
70 * @dataProvider validStatements
72 public function testProcessValidStatement($code)
74 $stmts = $this->parse($code);
75 $this->traverser->traverse($stmts);
78 public function validStatements()
81 array('class A { public static function A() {} public function __construct() {}}'),
82 array('class A { private function __construct() {} public static function A() {}}'),
85 if (version_compare(PHP_VERSION, '5.3.3', '>=')) {
86 $statements[] = array('namespace B; class A { private static function A() {}}');