ImplodeCallFixerTest.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  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\FunctionNotation;
  12. use PhpCsFixer\Tests\Test\AbstractFixerTestCase;
  13. /**
  14. * @author Kuba Werłos <werlos@gmail.com>
  15. *
  16. * @internal
  17. *
  18. * @covers \PhpCsFixer\Fixer\FunctionNotation\ImplodeCallFixer
  19. */
  20. final class ImplodeCallFixerTest 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. yield ["<?php implode('', [1,2,3]);"];
  35. yield ['<?php implode("", $foo);'];
  36. yield ['<?php implode($foo, $bar);'];
  37. yield ['<?php $arrayHelper->implode($foo);'];
  38. yield ['<?php ArrayHelper::implode($foo);'];
  39. yield ['<?php ArrayHelper\implode($foo);'];
  40. yield ['<?php define("implode", "foo"); implode; bar($baz);'];
  41. yield [
  42. '<?php implode("", $foo);',
  43. '<?php implode($foo, "");',
  44. ];
  45. yield [
  46. '<?php \implode("", $foo);',
  47. '<?php \implode($foo, "");',
  48. ];
  49. yield [
  50. '<?php implode("Lorem ipsum dolor sit amet", $foo);',
  51. '<?php implode($foo, "Lorem ipsum dolor sit amet");',
  52. ];
  53. yield [
  54. '<?php implode(\'\', $foo);',
  55. '<?php implode($foo);',
  56. ];
  57. yield [
  58. '<?php IMPlode("", $foo);',
  59. '<?php IMPlode($foo, "");',
  60. ];
  61. yield [
  62. '<?php implode("",$foo);',
  63. '<?php implode($foo,"");',
  64. ];
  65. yield [
  66. '<?php implode("", $weirdStuff[mt_rand($min, getMax()) + 200]);',
  67. '<?php implode($weirdStuff[mt_rand($min, getMax()) + 200], "");',
  68. ];
  69. yield [
  70. '<?php
  71. implode(
  72. "",
  73. $foo
  74. );',
  75. '<?php
  76. implode(
  77. $foo,
  78. ""
  79. );',
  80. ];
  81. yield [
  82. '<?php
  83. implode(
  84. \'\', $foo
  85. );',
  86. '<?php
  87. implode(
  88. $foo
  89. );',
  90. ];
  91. yield [
  92. '<?php
  93. implode(# 1
  94. ""/* 2.1 */,# 2.2
  95. $foo# 3
  96. );',
  97. '<?php
  98. implode(# 1
  99. $foo/* 2.1 */,# 2.2
  100. ""# 3
  101. );',
  102. ];
  103. yield [
  104. '<?php
  105. implode(# 1
  106. # 2
  107. \'\', $foo# 3
  108. # 4
  109. )# 5
  110. ;',
  111. '<?php
  112. implode(# 1
  113. # 2
  114. $foo# 3
  115. # 4
  116. )# 5
  117. ;',
  118. ];
  119. yield [
  120. '<?php
  121. implode(\'\', $a);implode(\'\', $a);implode(\'\', $a);implode(\'\', $a);implode(\'\', $a);implode(\'\', $a);
  122. // comment for testing
  123. implode(\'\', $a);implode(\'\', $a);implode(\'\', $a);implode(\'\', $a);implode(\'\', $a);implode(\'\', $a);
  124. ',
  125. '<?php
  126. implode($a);implode($a);implode($a);implode($a);implode($a);implode($a);
  127. // comment for testing
  128. implode($a);implode($a);implode($a);implode($a);implode($a);implode($a);
  129. ',
  130. ];
  131. }
  132. /**
  133. * @param string $expected
  134. * @param string $input
  135. *
  136. * @requires PHP 7.3
  137. * @dataProvider provideFix73Cases
  138. */
  139. public function testFix73($expected, $input)
  140. {
  141. $this->doTest($expected, $input);
  142. }
  143. public function provideFix73Cases()
  144. {
  145. yield [
  146. '<?php implode("", $foo, );',
  147. '<?php implode($foo, "", );',
  148. ];
  149. yield [
  150. '<?php implode(\'\', $foo, );',
  151. '<?php implode($foo, );',
  152. ];
  153. yield [
  154. '<?php
  155. implode(
  156. "",
  157. $foo,
  158. );',
  159. '<?php
  160. implode(
  161. $foo,
  162. "",
  163. );',
  164. ];
  165. }
  166. }