FinalClassFixerTest.php 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <?php
  2. /*
  3. * This file is part of PHP CS Fixer.
  4. *
  5. * (c) Fabien Potencier <fabien@symfony.com>
  6. * Dariusz Rumiński <dariusz.ruminski@gmail.com>
  7. *
  8. * This source file is subject to the MIT license that is bundled
  9. * with this source code in the file LICENSE.
  10. */
  11. namespace PhpCsFixer\Tests\Fixer\ClassNotation;
  12. use PhpCsFixer\Tests\Test\AbstractFixerTestCase;
  13. /**
  14. * @author Filippo Tessarotto <zoeslam@gmail.com>
  15. *
  16. * @internal
  17. *
  18. * @covers \PhpCsFixer\Fixer\ClassNotation\FinalClassFixer
  19. */
  20. final class FinalClassFixerTest extends AbstractFixerTestCase
  21. {
  22. /**
  23. * @param string $expected
  24. * @param null|string $input
  25. *
  26. * @dataProvider provideFixCases
  27. */
  28. public function testFix($expected, $input = null)
  29. {
  30. $this->doTest($expected, $input);
  31. }
  32. public function provideFixCases()
  33. {
  34. return [
  35. ['<?php /** @Entity */ class MyEntity {}'],
  36. ['<?php use Doctrine\ORM\Mapping as ORM; /** @ORM\Entity */ class MyEntity {}'],
  37. ['<?php use Doctrine\ORM\Mapping; /** @Mapping\Entity */ class MyEntity {}'],
  38. ['<?php use Doctrine\ORM; /** @ORM\Mapping\Entity */ class MyEntity {}'],
  39. ['<?php /** @entity */ class MyEntity {}'],
  40. ['<?php use Doctrine\ORM\Mapping as ORM; /** @orm\entity */ class MyEntity {}'],
  41. ['<?php abstract class MyAbstract {}'],
  42. ['<?php trait MyTrait {}'],
  43. ['<?php interface MyInterface {}'],
  44. ['<?php echo Exception::class;'],
  45. [
  46. '<?php final class MyClass {}',
  47. '<?php class MyClass {}',
  48. ],
  49. [
  50. '<?php final class MyClass extends MyAbstract {}',
  51. '<?php class MyClass extends MyAbstract {}',
  52. ],
  53. [
  54. '<?php final class MyClass implements MyInterface {}',
  55. '<?php class MyClass implements MyInterface {}',
  56. ],
  57. [
  58. '<?php /** @codeCoverageIgnore */ final class MyEntity {}',
  59. '<?php /** @codeCoverageIgnore */ class MyEntity {}',
  60. ],
  61. [
  62. '<?php final class A {} abstract class B {} final class C {}',
  63. '<?php class A {} abstract class B {} class C {}',
  64. ],
  65. [
  66. '<?php /** @internal Map my app to an @Entity */ final class MyMapper {}',
  67. '<?php /** @internal Map my app to an @Entity */ class MyMapper {}',
  68. ],
  69. ];
  70. }
  71. /**
  72. * @param string $expected PHP source code
  73. * @param null|string $input PHP source code
  74. *
  75. * @dataProvider provideFix70Cases
  76. * @requires PHP 7.0
  77. */
  78. public function testFix70($expected, $input = null)
  79. {
  80. $this->doTest($expected, $input);
  81. }
  82. public function provideFix70Cases()
  83. {
  84. return [
  85. ['<?php $anonymClass = new class {};'],
  86. ];
  87. }
  88. }