More updates to stop using dev or alpha or beta versions.
[yaffs-website] / vendor / psy / psysh / test / CodeCleaner / PassableByReferencePassTest.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\PassableByReferencePass;
15
16 class PassableByReferencePassTest extends CodeCleanerTestCase
17 {
18     public function setUp()
19     {
20         $this->setPass(new PassableByReferencePass());
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             ['array_pop(array())'],
36             ['array_pop(array($foo))'],
37             ['array_shift(array())'],
38         ];
39     }
40
41     /**
42      * @dataProvider validStatements
43      */
44     public function testProcessStatementPasses($code)
45     {
46         $this->parseAndTraverse($code);
47         $this->assertTrue(true);
48     }
49
50     public function validStatements()
51     {
52         return [
53             ['array_pop(json_decode("[]"))'],
54             ['array_pop($foo)'],
55             ['array_pop($foo->bar)'],
56             ['array_pop($foo::baz)'],
57             ['array_pop(Foo::qux)'],
58         ];
59     }
60
61     /**
62      * @dataProvider validArrayMultisort
63      */
64     public function testArrayMultisort($code)
65     {
66         $this->parseAndTraverse($code);
67         $this->assertTrue(true);
68     }
69
70     public function validArrayMultisort()
71     {
72         return [
73             ['array_multisort($a)'],
74             ['array_multisort($a, $b)'],
75             ['array_multisort($a, SORT_NATURAL, $b)'],
76             ['array_multisort($a, SORT_NATURAL | SORT_FLAG_CASE, $b)'],
77             ['array_multisort($a, SORT_ASC, SORT_NATURAL | SORT_FLAG_CASE, $b)'],
78             ['array_multisort($a, SORT_NATURAL | SORT_FLAG_CASE, SORT_ASC, $b)'],
79             ['array_multisort($a, $b, SORT_ASC, SORT_NATURAL | SORT_FLAG_CASE)'],
80             ['array_multisort($a, SORT_NATURAL | SORT_FLAG_CASE, $b, SORT_ASC, SORT_NATURAL | SORT_FLAG_CASE)'],
81             ['array_multisort($a, 1, $b)'],
82             ['array_multisort($a, 1 + 2, $b)'],
83             ['array_multisort($a, getMultisortFlags(), $b)'],
84         ];
85     }
86
87     /**
88      * @dataProvider invalidArrayMultisort
89      * @expectedException \Psy\Exception\FatalErrorException
90      */
91     public function testInvalidArrayMultisort($code)
92     {
93         $this->parseAndTraverse($code);
94     }
95
96     public function invalidArrayMultisort()
97     {
98         return [
99             ['array_multisort(1)'],
100             ['array_multisort(array(1, 2, 3))'],
101             ['array_multisort($a, SORT_NATURAL, SORT_ASC, SORT_NATURAL, $b)'],
102         ];
103     }
104 }