4 * This file is part of Psy Shell.
6 * (c) 2012-2018 Justin Hileman
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
12 namespace Psy\Test\CodeCleaner;
14 use Psy\CodeCleaner\UseStatementPass;
16 class UseStatementPassTest extends CodeCleanerTestCase
18 public function setUp()
20 $this->setPass(new UseStatementPass());
24 * @dataProvider useStatements
26 public function testProcess($from, $to)
28 $this->assertProcessesAs($from, $to);
31 public function useStatements()
35 "use StdClass as NotSoStd;\n\$std = new NotSoStd();",
36 '$std = new \\StdClass();',
39 "namespace Foo;\n\nuse StdClass as S;\n\$std = new S();",
40 "namespace Foo;\n\n\$std = new \\StdClass();",
43 "namespace Foo;\n\nuse \\StdClass as S;\n\$std = new S();",
44 "namespace Foo;\n\n\$std = new \\StdClass();",
47 "use Foo\\Bar as fb;\n\$baz = new fb\\Baz();",
48 '$baz = new \\Foo\\Bar\\Baz();',
51 "use Foo\\Bar;\n\$baz = new Bar\\Baz();",
52 '$baz = new \\Foo\\Bar\\Baz();',
55 "namespace Foo;\nuse Bar;\n\$baz = new Bar\\Baz();",
56 "namespace Foo;\n\n\$baz = new \\Bar\\Baz();",
59 "namespace Foo;\n\nuse \\StdClass as S;\n\$std = new S();\nnamespace Foo;\n\n\$std = new S();",
60 "namespace Foo;\n\n\$std = new \\StdClass();\nnamespace Foo;\n\n\$std = new \\StdClass();",
63 "namespace Foo;\n\nuse \\StdClass as S;\n\$std = new S();\nnamespace Bar;\n\n\$std = new S();",
64 "namespace Foo;\n\n\$std = new \\StdClass();\nnamespace Bar;\n\n\$std = new S();",
67 "use Foo\\Bar as fb, Qux as Q;\n\$baz = new fb\\Baz();\n\$qux = new Q();",
68 "\$baz = new \\Foo\\Bar\\Baz();\n\$qux = new \\Qux();",
74 * @dataProvider groupUseStatements
76 public function testGroupUseProcess($from, $to)
78 $this->assertProcessesAs($from, $to);
81 public function groupUseStatements()
83 if (version_compare(PHP_VERSION, '7.0', '<')) {
84 $this->markTestSkipped();
89 "use Foo\\{Bar, Baz, Qux as Q};\n\$bar = new Bar();\n\$baz = new Baz();\n\$qux = new Q();",
90 "\$bar = new \\Foo\\Bar();\n\$baz = new \\Foo\\Baz();\n\$qux = new \\Foo\\Qux();",
93 "use X\\{Foo, Bar as B};\n\$foo = new Foo();\n\$baz = new B\\Baz();",
94 "\$foo = new \\X\\Foo();\n\$baz = new \\X\\Bar\\Baz();",
97 "use X\\{Foo, Bar as B};\n\$foo = new Foo();\n\$bar = new Bar();\n\$baz = new B\\Baz();",
98 "\$foo = new \\X\\Foo();\n\$bar = new Bar();\n\$baz = new \\X\\Bar\\Baz();",