ImplodeCallFixerTest.php 3.7 KB

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