* 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\Phpdoc; use PhpCsFixer\Tests\Test\AbstractFixerTestCase; use PhpCsFixer\WhitespacesFixerConfig; /** * @author Dariusz Rumiński * * @internal * * @covers \PhpCsFixer\Fixer\Phpdoc\PhpdocAddMissingParamAnnotationFixer */ final class PhpdocAddMissingParamAnnotationFixerTest extends AbstractFixerTestCase { public function testConfigureRejectsUnknownConfigurationKey() { $key = 'foo'; $this->expectException(\PhpCsFixer\ConfigurationException\InvalidConfigurationException::class); $this->expectExceptionMessage(sprintf( '[phpdoc_add_missing_param_annotation] Invalid configuration: The option "%s" does not exist.', $key )); $this->fixer->configure([ $key => 'bar', ]); } /** * @dataProvider provideConfigureRejectsInvalidConfigurationValueCases * * @param mixed $value */ public function testConfigureRejectsInvalidConfigurationValue($value) { $this->expectException(\PhpCsFixer\ConfigurationException\InvalidConfigurationException::class); $this->expectExceptionMessage(sprintf( 'expected to be of type "bool", but is of type "%s".', \is_object($value) ? \get_class($value) : \gettype($value) )); $this->fixer->configure([ 'only_untyped' => $value, ]); } /** * @return array */ public function provideConfigureRejectsInvalidConfigurationValueCases() { return [ 'null' => [null], 'int' => [1], 'array' => [[]], 'float' => [0.1], 'object' => [new \stdClass()], ]; } /** * @param string $expected * @param null|string $input * * @dataProvider provideFixCases */ public function testFix($expected, $input = null, array $config = []) { $this->fixer->configure($config ?: ['only_untyped' => false]); $this->doTest($expected, $input); } public function provideFixCases() { return [ [ ' true], ], [ 'fixer->configure($config ?: ['only_untyped' => false]); $this->doTest($expected, $input); } public function provideFix70Cases() { return [ [ 'fixer->configure($config ?: ['only_untyped' => false]); $this->doTest($expected, $input); } public function provideFix71Cases() { return [ [ 'fixer->setWhitespacesConfig(new WhitespacesFixerConfig("\t", "\r\n")); $this->fixer->configure($config ?: ['only_untyped' => false]); $this->doTest($expected, $input); } public function provideMessyWhitespacesCases() { return [ [ "fixer->configure(['only_untyped' => false]); $this->doTest($expected, $input); } public function provideByReferenceCases() { return [ [ 'fixer->configure(['only_untyped' => false]); $this->doTest($expected, $input); } public function provideVariableNumberOfArgumentsCases() { return [ [ '