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\ValidConstructorPass;
16 class ValidConstructorPassTest extends CodeCleanerTestCase
18 protected function setUp()
20 $this->setPass(new ValidConstructorPass());
24 * @dataProvider invalidStatements
25 * @expectedException \Psy\Exception\FatalErrorException
27 public function testProcessInvalidStatement($code)
29 $this->parseAndTraverse($code);
33 * @dataProvider invalidParserStatements
34 * @expectedException \Psy\Exception\ParseErrorException
36 public function testProcessInvalidStatementCatchedByParser($code)
38 $this->parseAndTraverse($code);
41 public function invalidStatements()
44 ['class A { public static function A() {}}'],
45 ['class A { public static function a() {}}'],
46 ['class A { private static function A() {}}'],
47 ['class A { private static function a() {}}'],
50 if (\version_compare(PHP_VERSION, '7.0', '>=')) {
51 $data[] = ['class A { public function A(): ?array {}}'];
52 $data[] = ['class A { public function a(): ?array {}}'];
58 public function invalidParserStatements()
61 ['class A { public static function __construct() {}}'],
62 ['class A { private static function __construct() {}}'],
63 ['class A { private static function __construct() {} public function A() {}}'],
64 ['namespace B; class A { private static function __construct() {}}'],
69 * @dataProvider validStatements
71 public function testProcessValidStatement($code)
73 $this->parseAndTraverse($code);
74 $this->assertTrue(true);
77 public function validStatements()
80 ['class A { public static function A() {} public function __construct() {}}'],
81 ['class A { private function __construct() {} public static function A() {}}'],
82 ['namespace B; class A { private static function A() {}}'],
85 if (\version_compare(PHP_VERSION, '7.0', '>=')) {
86 $data[] = ['class A { public static function A() {} public function __construct() {}}'];
87 $data[] = ['class A { private function __construct() {} public static function A(): ?array {}}'];
88 $data[] = ['namespace B; class A { private static function A(): ?array {}}'];