* Dariusz RumiƄski * * This source file is subject to the MIT license that is bundled * with this source code in the file LICENSE. */ namespace PhpCsFixer\Tests\Fixer\Import; use PhpCsFixer\Tests\Test\AbstractFixerTestCase; /** * @author Gregor Harlan * * @internal * * @covers \PhpCsFixer\Fixer\Import\GlobalNamespaceImportFixer */ final class GlobalNamespaceImportFixerTest extends AbstractFixerTestCase { /** * @dataProvider provideFixImportConstantsCases */ public function testFixImportConstants(string $expected, ?string $input = null): void { $this->fixer->configure(['import_constants' => true]); $this->doTest($expected, $input); } public function provideFixImportConstantsCases() { return [ 'non-global names' => [ <<<'EXPECTED' [ <<<'EXPECTED' [ <<<'EXPECTED' [ <<<'EXPECTED' [ <<<'INPUT' [ <<<'EXPECTED' [ <<<'EXPECTED' [ <<<'EXPECTED' [ <<<'EXPECTED' [ <<<'EXPECTED' [ <<<'EXPECTED' [ <<<'EXPECTED' [ <<<'EXPECTED' [ <<<'INPUT' fixer->configure(['import_functions' => true]); $this->doTest($expected, $input); } public function provideFixImportFunctionsCases() { return [ 'non-global names' => [ <<<'EXPECTED' [ <<<'EXPECTED' [ <<<'EXPECTED' [ <<<'EXPECTED' [ <<<'INPUT' [ <<<'EXPECTED' [ <<<'EXPECTED' [ <<<'EXPECTED' [ <<<'EXPECTED' [ <<<'EXPECTED' [ <<<'EXPECTED' [ <<<'EXPECTED' fixer->configure(['import_functions' => true]); $this->doTest($expected, $input); } public function provideFixImportFunctions70Cases() { return [ 'name already used' => [ <<<'EXPECTED' fixer->configure(['import_classes' => true]); $this->doTest($expected, $input); } public function provideFixImportClassesCases() { return [ 'non-global names' => [ <<<'EXPECTED' [ <<<'EXPECTED' [ <<<'EXPECTED' [ <<<'EXPECTED' [ <<<'EXPECTED' */ function x() {} /** @var \Foo $foo */ $foo = new \Foo(); EXPECTED ], 'without namespace / do not import' => [ <<<'INPUT' [ <<<'EXPECTED' */ function x() {} EXPECTED , <<<'INPUT' */ function x() {} INPUT ], 'with namespace with {} syntax' => [ <<<'EXPECTED' [ <<<'EXPECTED' [ <<<'EXPECTED' [ <<<'EXPECTED' [ <<<'EXPECTED' [ <<<'EXPECTED' [ <<<'EXPECTED' [ <<<'EXPECTED' fixer->configure(['import_classes' => true]); $this->doTest($expected, $input); } public function provideFixImportClasses71Cases() { return [ 'handle typehints' => [ <<<'EXPECTED' fixer->configure(['import_constants' => false]); $this->doTest($expected, $input); } public function provideFixFullyQualifyConstantsCases() { return [ 'already fqn or sub namespace' => [ <<<'EXPECTED' [ <<<'EXPECTED' [ <<<'EXPECTED' fixer->configure(['import_functions' => false]); $this->doTest($expected, $input); } public function provideFixFullyQualifyFunctionsCases() { return [ 'already fqn or sub namespace' => [ <<<'EXPECTED' [ <<<'EXPECTED' [ <<<'EXPECTED' fixer->configure(['import_classes' => false]); $this->doTest($expected, $input); } public function provideFixFullyQualifyClassesCases() { return [ 'already fqn or sub namespace' => [ <<<'EXPECTED' [ <<<'EXPECTED' >|null */ function abc($foo, \Bar $bar = null) {} EXPECTED , <<<'INPUT' >|null */ function abc($foo, Bar $bar = null) {} INPUT ], 'ignore other imports and non-imported names' => [ <<<'EXPECTED' fixer->configure(['import_constants' => true]); $this->doTest($expected); } public function provideMultipleNamespacesCases() { yield [ <<<'INPUT'