NativeFunctionCasingFixerTest.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. <?php
  2. declare(strict_types=1);
  3. /*
  4. * This file is part of PHP CS Fixer.
  5. *
  6. * (c) Fabien Potencier <fabien@symfony.com>
  7. * Dariusz Rumiński <dariusz.ruminski@gmail.com>
  8. *
  9. * This source file is subject to the MIT license that is bundled
  10. * with this source code in the file LICENSE.
  11. */
  12. namespace PhpCsFixer\Tests\Fixer\Casing;
  13. use PhpCsFixer\Tests\Test\AbstractFixerTestCase;
  14. /**
  15. * @internal
  16. *
  17. * @covers \PhpCsFixer\Fixer\Casing\NativeFunctionCasingFixer
  18. */
  19. final class NativeFunctionCasingFixerTest extends AbstractFixerTestCase
  20. {
  21. /**
  22. * @dataProvider provideFixCases
  23. */
  24. public function testFix(string $expected, ?string $input = null): void
  25. {
  26. $this->doTest($expected, $input);
  27. }
  28. public static function provideFixCases(): iterable
  29. {
  30. return [
  31. [
  32. '<?php
  33. namespace Bar {
  34. function STRLEN($str) {
  35. return "overriden" . \strlen($str);
  36. }
  37. }
  38. namespace {
  39. echo \Bar\STRLEN("xxx");
  40. }',
  41. ],
  42. [
  43. '<?php
  44. echo strtolower("hello 1");
  45. ',
  46. '<?php
  47. echo STRTOLOWER("hello 1");
  48. ',
  49. ],
  50. [
  51. '<?php
  52. echo strtolower //a
  53. ("hello 2");
  54. ',
  55. '<?php
  56. echo STRTOLOWER //a
  57. ("hello 2");
  58. ',
  59. ],
  60. [
  61. '<?php
  62. echo strtolower /**/ ("hello 3");
  63. ',
  64. '<?php
  65. echo STRTOLOWER /**/ ("hello 3");
  66. ',
  67. ],
  68. [
  69. '<?php
  70. echo \sqrt(4);
  71. ',
  72. '<?php
  73. echo \sQrT(4);
  74. ',
  75. ],
  76. [
  77. '<?php
  78. echo "1".\sqrt("hello 5");
  79. ',
  80. '<?php
  81. echo "1".\SQRT("hello 5");
  82. ',
  83. ],
  84. [
  85. '<?php
  86. class Test{
  87. public function gettypE()
  88. {
  89. return 1;
  90. }
  91. function sqrT($a)
  92. {
  93. }
  94. function &END($a)
  95. {
  96. }
  97. }
  98. ',
  99. ],
  100. [
  101. '<?php
  102. new STRTOLOWER();
  103. ',
  104. ],
  105. [
  106. '<?php
  107. new \STRTOLOWER();
  108. ',
  109. ],
  110. [
  111. '<?php
  112. new \A\B\STRTOLOWER();
  113. ',
  114. ],
  115. [
  116. '<?php
  117. a::STRTOLOWER();
  118. ',
  119. ],
  120. [
  121. '<?php
  122. $a->STRTOLOWER();
  123. ',
  124. ],
  125. [
  126. '<?php fOoO();',
  127. ],
  128. [
  129. '<?php
  130. namespace Foo {
  131. function &Next() {
  132. return prev(-1);
  133. }
  134. }',
  135. ],
  136. [
  137. '<?php
  138. $next1 = & next($array1);
  139. $next2 = & \next($array2);
  140. ',
  141. '<?php
  142. $next1 = & Next($array1);
  143. $next2 = & \Next($array2);
  144. ',
  145. ],
  146. [
  147. '<?php
  148. namespace Foo;
  149. use function MyStuff\StrToLower;
  150. class Bar {
  151. public function getName() {
  152. return StrToLower($this->name);
  153. }
  154. }',
  155. ],
  156. [
  157. '<?php
  158. echo \sqrt(4 , );
  159. ',
  160. '<?php
  161. echo \sQrT(4 , );
  162. ',
  163. ],
  164. [
  165. '<?php
  166. $a->STRTOLOWER(1,);
  167. ',
  168. ],
  169. ];
  170. }
  171. /**
  172. * @dataProvider provideFix80Cases
  173. *
  174. * @requires PHP 8.0
  175. */
  176. public function testFix80(string $expected): void
  177. {
  178. $this->doTest($expected);
  179. }
  180. public static function provideFix80Cases(): iterable
  181. {
  182. yield ['<?php $a?->STRTOLOWER(1,);'];
  183. yield [
  184. '<?php
  185. final class SomeClass
  186. {
  187. #[File(mimeTypes: ["application/pdf", "image/*"])]
  188. public FileBlob $attachment;
  189. }
  190. ',
  191. ];
  192. }
  193. }