123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347 |
- <?php
- declare(strict_types=1);
- /*
- * This file is part of PHP CS Fixer.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- * Dariusz Rumiński <dariusz.ruminski@gmail.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
- namespace PhpCsFixer\Tests\Fixer\ClassNotation;
- use PhpCsFixer\Tests\Test\AbstractFixerTestCase;
- /**
- * @author Filippo Tessarotto <zoeslam@gmail.com>
- *
- * @internal
- *
- * @covers \PhpCsFixer\Fixer\ClassNotation\NoUnneededFinalMethodFixer
- */
- final class NoUnneededFinalMethodFixerTest extends AbstractFixerTestCase
- {
- /**
- * @dataProvider provideFixCases
- */
- public function testFix(string $expected, ?string $input = null): void
- {
- $this->doTest($expected, $input);
- }
- public function provideFixCases()
- {
- return [
- 'default' => [
- '<?php
- final class Foo {
- public function foo() {}
- protected function bar() {}
- private function baz() {}
- }',
- '<?php
- final class Foo {
- final public function foo() {}
- final protected function bar() {}
- final private function baz() {}
- }',
- ],
- 'final-after-visibility' => [
- '<?php
- final class Foo {
- public function foo() {}
- protected function bar() {}
- private function baz() {}
- }',
- '<?php
- final class Foo {
- public final function foo() {}
- protected final function bar() {}
- private final function baz() {}
- }',
- ],
- 'default-static' => [
- '<?php
- final class SomeClass {
- public static function foo() {}
- protected static function bar() {}
- private static function baz() {}
- }',
- '<?php
- final class SomeClass {
- final public static function foo() {}
- final protected static function bar() {}
- final private static function baz() {}
- }',
- ],
- 'visibility-then-final-then-static' => [
- '<?php
- final class SomeClass {
- public static function foo() {}
- protected static function bar() {}
- private static function baz() {}
- }',
- '<?php
- final class SomeClass {
- public final static function foo() {}
- protected final static function bar() {}
- private final static function baz() {}
- }',
- ],
- 'visibility-then-static-then-final' => [
- '<?php
- final class SomeClass {
- public static function foo() {}
- protected static function bar() {}
- private static function baz() {}
- }',
- '<?php
- final class SomeClass {
- public static final function foo() {}
- protected static final function bar() {}
- private static final function baz() {}
- }',
- ],
- 'static-then-visibility-then-final' => [
- '<?php
- final class SomeClass {
- static public function foo() {}
- static protected function bar() {}
- static private function baz() {}
- }',
- '<?php
- final class SomeClass {
- static public final function foo() {}
- static protected final function bar() {}
- static private final function baz() {}
- }',
- ],
- 'static-then-final-then-visibility' => [
- '<?php
- final class SomeClass {
- static public function foo() {}
- static protected function bar() {}
- static private function baz() {}
- }',
- '<?php
- final class SomeClass {
- static final public function foo() {}
- static final protected function bar() {}
- static final private function baz() {}
- }',
- ],
- 'no-visibility' => [
- '<?php
- final class Foo {
- function foo() {}
- function bar() {}
- function baz() {}
- }',
- '<?php
- final class Foo {
- final function foo() {}
- final function bar() {}
- final function baz() {}
- }',
- ],
- 'no-visibility-final-then-static' => [
- '<?php
- final class SomeClass {
- static function foo() {}
- static function bar() {}
- static function baz() {}
- }',
- '<?php
- final class SomeClass {
- final static function foo() {}
- final static function bar() {}
- final static function baz() {}
- }',
- ],
- 'no-visibility-static-then-final' => [
- '<?php
- final class SomeClass {
- static function foo() {}
- static function bar() {}
- static function baz() {}
- }',
- '<?php
- final class SomeClass {
- static final function foo() {}
- static final function bar() {}
- static final function baz() {}
- }',
- ],
- 'private-method' => [
- '<?php
- class Foo {
- private function bar() {}
- }',
- '<?php
- class Foo {
- final private function bar() {}
- }',
- ],
- 'private-method-with-visibility-before-final' => [
- '<?php
- class Foo {
- private function bar() {}
- }',
- '<?php
- class Foo {
- private final function bar() {}
- }',
- ],
- 'preserve-comment' => [
- '<?php final class Foo { /* comment */public function foo() {} }',
- '<?php final class Foo { final/* comment */public function foo() {} }',
- ],
- 'multiple-classes-per-file' => [
- '<?php final class Foo { public function foo() {} } abstract class Bar { final public function bar() {} }',
- '<?php final class Foo { final public function foo() {} } abstract class Bar { final public function bar() {} }',
- ],
- 'non-final' => [
- '<php class Foo { final public function foo() {} }',
- ],
- 'abstract-class' => [
- '<php abstract class Foo { final public function foo() {} }',
- ],
- 'final-method-with-private-attribute' => [
- '<?php abstract class Foo { private static $var; final public function foo() {} }',
- ],
- 'trait' => [
- '<php trait Foo { final public function foo() {} }',
- ],
- 'do not fix constructors' => [
- '<?php
- class Bar
- {
- final private function __construct()
- {
- }
- }',
- ],
- ];
- }
- /**
- * @requires PHP 7.0
- * @dataProvider providePhp70Cases
- */
- public function testFixPhp70(string $expected, ?string $input = null): void
- {
- $this->doTest($expected, $input);
- }
- public function providePhp70Cases()
- {
- return [
- 'anonymous-class-inside' => [
- '<?php
- final class Foo
- {
- public function foo()
- {
- }
- private function bar()
- {
- new class {
- final public function baz()
- {
- }
- };
- }
- }
- ',
- '<?php
- final class Foo
- {
- final public function foo()
- {
- }
- private function bar()
- {
- new class {
- final public function baz()
- {
- }
- };
- }
- }
- ',
- ],
- 'anonymous-class-inside-with-final-private-method' => [
- '<?php
- class Foo
- {
- private function bar()
- {
- new class {
- private function qux()
- {
- }
- };
- }
- }
- ',
- '<?php
- class Foo
- {
- private function bar()
- {
- new class {
- final private function qux()
- {
- }
- };
- }
- }
- ',
- ],
- ];
- }
- /**
- * @dataProvider provideFixConfigCases
- */
- public function testFixConfig(string $expected, string $input, array $config): void
- {
- $this->fixer->configure($config);
- $this->doTest($expected, $input);
- }
- public function provideFixConfigCases()
- {
- yield [
- '<?php
- final class Foo
- {
- private function baz() {}
- }
- class Bar
- {
- final private function bar1() {}
- }
- ',
- '<?php
- final class Foo
- {
- final private function baz() {}
- }
- class Bar
- {
- final private function bar1() {}
- }
- ',
- ['private_methods' => false],
- ];
- }
- }
|