FunctionTypehintSpaceFixerTest.php 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  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\FunctionNotation;
  13. use PhpCsFixer\Tests\Test\AbstractFixerTestCase;
  14. /**
  15. * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
  16. *
  17. * @internal
  18. *
  19. * @covers \PhpCsFixer\Fixer\FunctionNotation\FunctionTypehintSpaceFixer
  20. */
  21. final class FunctionTypehintSpaceFixerTest extends AbstractFixerTestCase
  22. {
  23. /**
  24. * @dataProvider provideFixCases
  25. */
  26. public function testFix(string $expected, ?string $input = null): void
  27. {
  28. $this->doTest($expected, $input);
  29. }
  30. public static function provideFixCases(): iterable
  31. {
  32. yield [
  33. '<?php function foo($param) {}',
  34. ];
  35. yield [
  36. '<?php function foo($param1,$param2) {}',
  37. ];
  38. yield [
  39. '<?php function foo(&$param) {}',
  40. ];
  41. yield [
  42. '<?php function foo(& $param) {}',
  43. ];
  44. yield [
  45. '<?php function foo(/**int*/$param) {}',
  46. ];
  47. yield [
  48. '<?php function foo(bool /**bla bla*/ $param) {}',
  49. ];
  50. yield [
  51. '<?php function foo(bool /**bla bla*/$param) {}',
  52. '<?php function foo(bool/**bla bla*/$param) {}',
  53. ];
  54. yield [
  55. '<?php function foo(bool /**bla bla*/$param) {}',
  56. '<?php function foo(bool /**bla bla*/$param) {}',
  57. ];
  58. yield [
  59. '<?php function foo(callable $param) {}',
  60. '<?php function foo(callable$param) {}',
  61. ];
  62. yield [
  63. '<?php function foo(callable $param) {}',
  64. '<?php function foo(callable $param) {}',
  65. ];
  66. yield [
  67. '<?php function foo(array &$param) {}',
  68. '<?php function foo(array&$param) {}',
  69. ];
  70. yield [
  71. '<?php function foo(array &$param) {}',
  72. '<?php function foo(array &$param) {}',
  73. ];
  74. yield [
  75. '<?php function foo(array & $param) {}',
  76. '<?php function foo(array& $param) {}',
  77. ];
  78. yield [
  79. '<?php function foo(array & $param) {}',
  80. '<?php function foo(array & $param) {}',
  81. ];
  82. yield [
  83. '<?php function foo(Bar $param) {}',
  84. '<?php function foo(Bar$param) {}',
  85. ];
  86. yield [
  87. '<?php function foo(Bar $param) {}',
  88. '<?php function foo(Bar $param) {}',
  89. ];
  90. yield [
  91. '<?php function foo(Bar\Baz $param) {}',
  92. '<?php function foo(Bar\Baz$param) {}',
  93. ];
  94. yield [
  95. '<?php function foo(Bar\Baz $param) {}',
  96. '<?php function foo(Bar\Baz $param) {}',
  97. ];
  98. yield [
  99. '<?php function foo(Bar\Baz &$param) {}',
  100. '<?php function foo(Bar\Baz&$param) {}',
  101. ];
  102. yield [
  103. '<?php function foo(Bar\Baz &$param) {}',
  104. '<?php function foo(Bar\Baz &$param) {}',
  105. ];
  106. yield [
  107. '<?php function foo(Bar\Baz & $param) {}',
  108. '<?php function foo(Bar\Baz& $param) {}',
  109. ];
  110. yield [
  111. '<?php function foo(Bar\Baz & $param) {}',
  112. '<?php function foo(Bar\Baz & $param) {}',
  113. ];
  114. yield [
  115. '<?php $foo = function(Bar\Baz $param) {};',
  116. '<?php $foo = function(Bar\Baz$param) {};',
  117. ];
  118. yield [
  119. '<?php $foo = function(Bar\Baz $param) {};',
  120. '<?php $foo = function(Bar\Baz $param) {};',
  121. ];
  122. yield [
  123. '<?php $foo = function(Bar\Baz &$param) {};',
  124. '<?php $foo = function(Bar\Baz&$param) {};',
  125. ];
  126. yield [
  127. '<?php $foo = function(Bar\Baz &$param) {};',
  128. '<?php $foo = function(Bar\Baz &$param) {};',
  129. ];
  130. yield [
  131. '<?php $foo = function(Bar\Baz & $param) {};',
  132. '<?php $foo = function(Bar\Baz& $param) {};',
  133. ];
  134. yield [
  135. '<?php $foo = function(Bar\Baz & $param) {};',
  136. '<?php $foo = function(Bar\Baz & $param) {};',
  137. ];
  138. yield [
  139. '<?php class Test { public function foo(Bar\Baz $param) {} }',
  140. '<?php class Test { public function foo(Bar\Baz$param) {} }',
  141. ];
  142. yield [
  143. '<?php class Test { public function foo(Bar\Baz $param) {} }',
  144. '<?php class Test { public function foo(Bar\Baz $param) {} }',
  145. ];
  146. yield [
  147. '<?php $foo = function(array $a,
  148. array $b, array $c, array $d) {};',
  149. '<?php $foo = function(array $a,
  150. array$b, array $c, array
  151. $d) {};',
  152. ];
  153. yield [
  154. '<?php $foo = function(
  155. array $a,
  156. $b
  157. ) {};',
  158. ];
  159. yield [
  160. '<?php $foo = function(
  161. $a,
  162. array $b
  163. ) {};',
  164. ];
  165. yield [
  166. '<?php function foo(...$param) {}',
  167. ];
  168. yield [
  169. '<?php function foo(&...$param) {}',
  170. ];
  171. yield [
  172. '<?php function foo(array ...$param) {}',
  173. '<?php function foo(array...$param) {}',
  174. ];
  175. yield [
  176. '<?php function foo(array & ...$param) {}',
  177. '<?php function foo(array& ...$param) {}',
  178. ];
  179. yield ['<?php use function some\test\{fn_a, fn_b, fn_c};'];
  180. yield ['<?php use function some\test\{fn_a, fn_b, fn_c} ?>'];
  181. yield [
  182. '<?php $foo = fn(Bar\Baz $param) => null;',
  183. '<?php $foo = fn(Bar\Baz$param) => null;',
  184. ];
  185. yield [
  186. '<?php $foo = fn(Bar\Baz $param) => null;',
  187. '<?php $foo = fn(Bar\Baz $param) => null;',
  188. ];
  189. yield [
  190. '<?php $foo = fn(Bar\Baz &$param) => null;',
  191. '<?php $foo = fn(Bar\Baz&$param) => null;',
  192. ];
  193. yield [
  194. '<?php $foo = fn(Bar\Baz &$param) => null;',
  195. '<?php $foo = fn(Bar\Baz &$param) => null;',
  196. ];
  197. yield [
  198. '<?php $foo = fn(Bar\Baz & $param) => null;',
  199. '<?php $foo = fn(Bar\Baz& $param) => null;',
  200. ];
  201. yield [
  202. '<?php $foo = fn(Bar\Baz & $param) => null;',
  203. '<?php $foo = fn(Bar\Baz & $param) => null;',
  204. ];
  205. yield [
  206. '<?php $foo = fn(array $a,
  207. array $b, array $c, array $d) => null;',
  208. '<?php $foo = fn(array $a,
  209. array$b, array $c, array
  210. $d) => null;',
  211. ];
  212. yield [
  213. '<?php $foo = fn(
  214. array $a,
  215. $b
  216. ) => null;',
  217. ];
  218. yield [
  219. '<?php $foo = fn(
  220. $a,
  221. array $b
  222. ) => null;',
  223. ];
  224. }
  225. /**
  226. * @dataProvider provideFix80Cases
  227. *
  228. * @requires PHP 8.0
  229. */
  230. public function testFix80(string $expected, string $input): void
  231. {
  232. $this->doTest($expected, $input);
  233. }
  234. public static function provideFix80Cases(): iterable
  235. {
  236. yield [
  237. '<?php function foo(mixed $a){}',
  238. '<?php function foo(mixed$a){}',
  239. ];
  240. }
  241. }