More updates to stop using dev or alpha or beta versions.
[yaffs-website] / vendor / psy / psysh / test / CodeCleaner / FinalClassPassTest.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\FinalClassPass;
15
16 class FinalClassPassTest extends CodeCleanerTestCase
17 {
18     public function setUp()
19     {
20         $this->setPass(new FinalClassPass());
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         $data = [
35             ['final class A {} class B extends A {}'],
36             ['class A {} final class B extends A {} class C extends B {}'],
37             // array('namespace A { final class B {} } namespace C { class D extends \\A\\B {} }'),
38         ];
39
40         if (!defined('HHVM_VERSION')) {
41             // For some reason Closure isn't final in HHVM?
42             $data[] = ['class A extends \\Closure {}'];
43         }
44
45         return $data;
46     }
47
48     /**
49      * @dataProvider validStatements
50      */
51     public function testProcessStatementPasses($code)
52     {
53         $this->parseAndTraverse($code);
54         $this->assertTrue(true);
55     }
56
57     public function validStatements()
58     {
59         return [
60             ['class A extends \\stdClass {}'],
61             ['final class A extends \\stdClass {}'],
62             ['class A {} class B extends A {}'],
63         ];
64     }
65 }