More updates to stop using dev or alpha or beta versions.
[yaffs-website] / vendor / psy / psysh / test / CodeCleaner / CallTimePassByReferencePassTest.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\CallTimePassByReferencePass;
15
16 class CallTimePassByReferencePassTest extends CodeCleanerTestCase
17 {
18     public function setUp()
19     {
20         $this->setPass(new CallTimePassByReferencePass());
21     }
22
23     /**
24      * @dataProvider invalidStatements
25      * @expectedException \Psy\Exception\FatalErrorException
26      */
27     public function testProcessStatementFails($code)
28     {
29         $this->parseAndTraverse($code);
30     }
31
32     public function invalidStatements()
33     {
34         return [
35             ['f(&$arg)'],
36             ['$object->method($first, &$arg)'],
37             ['$closure($first, &$arg, $last)'],
38             ['A::b(&$arg)'],
39         ];
40     }
41
42     /**
43      * @dataProvider validStatements
44      */
45     public function testProcessStatementPasses($code)
46     {
47         $this->parseAndTraverse($code);
48         $this->assertTrue(true);
49     }
50
51     public function validStatements()
52     {
53         return [
54             ['array(&$var)'],
55             ['$a = &$b'],
56             ['f(array(&$b))'],
57         ];
58     }
59 }