Chris@13
|
1 <?php
|
Chris@13
|
2
|
Chris@13
|
3 /*
|
Chris@13
|
4 * This file is part of Psy Shell.
|
Chris@13
|
5 *
|
Chris@13
|
6 * (c) 2012-2018 Justin Hileman
|
Chris@13
|
7 *
|
Chris@13
|
8 * For the full copyright and license information, please view the LICENSE
|
Chris@13
|
9 * file that was distributed with this source code.
|
Chris@13
|
10 */
|
Chris@13
|
11
|
Chris@13
|
12 namespace Psy\Test\CodeCleaner;
|
Chris@13
|
13
|
Chris@13
|
14 use Psy\CodeCleaner\ValidConstructorPass;
|
Chris@13
|
15
|
Chris@13
|
16 class ValidConstructorPassTest extends CodeCleanerTestCase
|
Chris@13
|
17 {
|
Chris@13
|
18 protected function setUp()
|
Chris@13
|
19 {
|
Chris@13
|
20 $this->setPass(new ValidConstructorPass());
|
Chris@13
|
21 }
|
Chris@13
|
22
|
Chris@13
|
23 /**
|
Chris@13
|
24 * @dataProvider invalidStatements
|
Chris@13
|
25 * @expectedException \Psy\Exception\FatalErrorException
|
Chris@13
|
26 */
|
Chris@13
|
27 public function testProcessInvalidStatement($code)
|
Chris@13
|
28 {
|
Chris@13
|
29 $this->parseAndTraverse($code);
|
Chris@13
|
30 }
|
Chris@13
|
31
|
Chris@13
|
32 /**
|
Chris@13
|
33 * @dataProvider invalidParserStatements
|
Chris@13
|
34 * @expectedException \Psy\Exception\ParseErrorException
|
Chris@13
|
35 */
|
Chris@13
|
36 public function testProcessInvalidStatementCatchedByParser($code)
|
Chris@13
|
37 {
|
Chris@13
|
38 $this->parseAndTraverse($code);
|
Chris@13
|
39 }
|
Chris@13
|
40
|
Chris@13
|
41 public function invalidStatements()
|
Chris@13
|
42 {
|
Chris@13
|
43 $data = [
|
Chris@13
|
44 ['class A { public static function A() {}}'],
|
Chris@13
|
45 ['class A { public static function a() {}}'],
|
Chris@13
|
46 ['class A { private static function A() {}}'],
|
Chris@13
|
47 ['class A { private static function a() {}}'],
|
Chris@13
|
48 ];
|
Chris@13
|
49
|
Chris@17
|
50 if (\version_compare(PHP_VERSION, '7.0', '>=')) {
|
Chris@13
|
51 $data[] = ['class A { public function A(): ?array {}}'];
|
Chris@13
|
52 $data[] = ['class A { public function a(): ?array {}}'];
|
Chris@13
|
53 }
|
Chris@13
|
54
|
Chris@13
|
55 return $data;
|
Chris@13
|
56 }
|
Chris@13
|
57
|
Chris@13
|
58 public function invalidParserStatements()
|
Chris@13
|
59 {
|
Chris@13
|
60 return [
|
Chris@13
|
61 ['class A { public static function __construct() {}}'],
|
Chris@13
|
62 ['class A { private static function __construct() {}}'],
|
Chris@13
|
63 ['class A { private static function __construct() {} public function A() {}}'],
|
Chris@13
|
64 ['namespace B; class A { private static function __construct() {}}'],
|
Chris@13
|
65 ];
|
Chris@13
|
66 }
|
Chris@13
|
67
|
Chris@13
|
68 /**
|
Chris@13
|
69 * @dataProvider validStatements
|
Chris@13
|
70 */
|
Chris@13
|
71 public function testProcessValidStatement($code)
|
Chris@13
|
72 {
|
Chris@13
|
73 $this->parseAndTraverse($code);
|
Chris@13
|
74 $this->assertTrue(true);
|
Chris@13
|
75 }
|
Chris@13
|
76
|
Chris@13
|
77 public function validStatements()
|
Chris@13
|
78 {
|
Chris@13
|
79 $data = [
|
Chris@13
|
80 ['class A { public static function A() {} public function __construct() {}}'],
|
Chris@13
|
81 ['class A { private function __construct() {} public static function A() {}}'],
|
Chris@13
|
82 ['namespace B; class A { private static function A() {}}'],
|
Chris@13
|
83 ];
|
Chris@13
|
84
|
Chris@17
|
85 if (\version_compare(PHP_VERSION, '7.0', '>=')) {
|
Chris@13
|
86 $data[] = ['class A { public static function A() {} public function __construct() {}}'];
|
Chris@13
|
87 $data[] = ['class A { private function __construct() {} public static function A(): ?array {}}'];
|
Chris@13
|
88 $data[] = ['namespace B; class A { private static function A(): ?array {}}'];
|
Chris@13
|
89 }
|
Chris@13
|
90
|
Chris@13
|
91 return $data;
|
Chris@13
|
92 }
|
Chris@13
|
93 }
|