* 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\LanguageConstruct; use PhpCsFixer\ConfigurationException\InvalidFixerConfigurationException; use PhpCsFixer\Tests\Test\AbstractFixerTestCase; /** * @author Dariusz Rumiński * * @internal * * @covers \PhpCsFixer\Fixer\LanguageConstruct\DeclareEqualNormalizeFixer * * @extends AbstractFixerTestCase<\PhpCsFixer\Fixer\LanguageConstruct\DeclareEqualNormalizeFixer> * * @phpstan-import-type _AutogeneratedInputConfiguration from \PhpCsFixer\Fixer\LanguageConstruct\DeclareEqualNormalizeFixer */ final class DeclareEqualNormalizeFixerTest extends AbstractFixerTestCase { /** * @param _AutogeneratedInputConfiguration $config * * @dataProvider provideFixCases */ public function testFix(string $expected, ?string $input, array $config): void { $this->fixer->configure($config); $this->doTest($expected, $input); } public static function provideFixCases(): iterable { yield 'minimal case remove whitespace (default config)' => [ ' [ ' 'none'], ]; yield 'minimal case add whitespace' => [ ' 'single'], ]; yield 'to much whitespace case add whitespace' => [ ' 'single'], ]; yield 'repeating case remove whitespace (default config)' => [ '', '', [], ]; yield 'repeating case add whitespace' => [ '', '', ['space' => 'single'], ]; yield 'minimal case add whitespace comments, single' => [ ' 'single'], ]; yield 'minimal case add whitespace comments, none' => [ ' 'none'], ]; yield 'declare having multiple directives, single' => [ ' [ ' 'single'], ]; } /** * @param _AutogeneratedInputConfiguration $config * * @dataProvider provideInvalidConfigurationCases */ public function testInvalidConfiguration(array $config, string $expectedMessage): void { $this->expectException(InvalidFixerConfigurationException::class); $this->expectExceptionMessage(\sprintf('[declare_equal_normalize] Invalid configuration: %s', $expectedMessage)); $this->fixer->configure($config); } public static function provideInvalidConfigurationCases(): iterable { yield [ [1, 2], 'The options "0", "1" do not exist.', ]; yield [ ['space' => 'tab'], 'The option "space" with value "tab" is invalid.', ]; } }