* 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\FunctionNotation; use PhpCsFixer\Tests\Test\AbstractFixerTestCase; /** * @author Denis Sokolov * @author Dariusz Rumiński * * @internal * * @covers \PhpCsFixer\Fixer\FunctionNotation\FunctionDeclarationFixer */ final class FunctionDeclarationFixerTest extends AbstractFixerTestCase { private static $configurationClosureSpacingNone = ['closure_function_spacing' => 'none']; public function testInvalidConfigurationClosureFunctionSpacing() { $this->expectException(\PhpCsFixer\ConfigurationException\InvalidFixerConfigurationException::class); $this->expectExceptionMessageMatches( '#^\[function_declaration\] Invalid configuration: The option "closure_function_spacing" with value "neither" is invalid\. Accepted values are: "none", "one"\.$#' ); $this->fixer->configure(['closure_function_spacing' => 'neither']); } /** * @param string $expected * @param null|string $input * * @dataProvider provideFixCases */ public function testFix($expected, $input = null, array $configuration = []) { $this->fixer->configure($configuration); $this->doTest($expected, $input); } public function provideFixCases() { return [ [ // non-PHP test 'function foo () {}', ], [ 'fixer->configure($configuration); $this->doTest($expected, $input); } public function provideFix70Cases() { return [ [''], ['', null, self::$configurationClosureSpacingNone], ]; } /** * @param string $expected * @param null|string $input * * @dataProvider provideFix74Cases * @requires PHP 7.4 */ public function test74($expected, $input = null, array $configuration = []) { $this->fixer->configure($configuration); $this->doTest($expected, $input); } public function provideFix74Cases() { return [ [ ' null;', ' null;', ], [ ' null;', ' null;', ], [ ' null;', ' null;', ], [ ' null;', ' null;', ], [ ' null;', null, self::$configurationClosureSpacingNone, ], [ ' null;', ' null;', self::$configurationClosureSpacingNone, ], [ ' null;', ' null;', self::$configurationClosureSpacingNone, ], [ ' null;', ' null;', self::$configurationClosureSpacingNone, ], [ ' null;', ' null;', self::$configurationClosureSpacingNone, ], [ ' $a;', ' $a;', ], [ ' $a;', ' $a;', self::$configurationClosureSpacingNone, ], ]; } /** * @param string $expected * @param null|string $input * * @dataProvider provideFixPhp80Cases * @requires PHP 8.0 */ public function testFixPhp80($expected, $input = null, array $configuration = []) { $this->fixer->configure($configuration); $this->doTest($expected, $input); } public function provideFixPhp80Cases() { yield [ ' null;', ' null;', self::$configurationClosureSpacingNone, ]; } }