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