fc4a5b6a5ec895ca924dcb812799cadd917a01d0
[yaffs-website] / vendor / psy / psysh / test / Psy / Test / CodeCleaner / InstanceOfPassTest.php
1 <?php
2
3 /*
4  * This file is part of Psy Shell.
5  *
6  * (c) 2012-2017 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\InstanceOfPass;
15
16 class InstanceOfPassTest extends CodeCleanerTestCase
17 {
18     protected function setUp()
19     {
20         $this->setPass(new InstanceOfPass());
21     }
22
23     /**
24      * @dataProvider invalidStatements
25      * @expectedException \Psy\Exception\FatalErrorException
26      */
27     public function testProcessInvalidStatement($code)
28     {
29         $stmts = $this->parse($code);
30         $this->traverser->traverse($stmts);
31     }
32
33     public function invalidStatements()
34     {
35         return array(
36             array('null instanceof stdClass'),
37             array('true instanceof stdClass'),
38             array('9 instanceof stdClass'),
39             array('1.0 instanceof stdClass'),
40             array('"foo" instanceof stdClass'),
41             array('__DIR__ instanceof stdClass'),
42             array('PHP_SAPI instanceof stdClass'),
43             array('1+1 instanceof stdClass'),
44             array('true && false instanceof stdClass'),
45             array('"a"."b" instanceof stdClass'),
46             array('!5 instanceof stdClass'),
47         );
48     }
49
50     /**
51      * @dataProvider validStatements
52      */
53     public function testProcessValidStatement($code)
54     {
55         $stmts = $this->parse($code);
56         $this->traverser->traverse($stmts);
57
58         // @todo a better thing to assert here?
59         $this->assertTrue(true);
60     }
61
62     public function validStatements()
63     {
64         $data = array(
65             array('$a instanceof stdClass'),
66             array('strtolower("foo") instanceof stdClass'),
67             array('array(1) instanceof stdClass'),
68             array('(string) "foo" instanceof stdClass'),
69             array('(1+1) instanceof stdClass'),
70             array('"foo ${foo} $bar" instanceof stdClass'),
71             array('DateTime::ISO8601 instanceof stdClass'),
72         );
73
74         return $data;
75     }
76 }