NoTrailingCommaInSinglelineArrayFixerTest.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  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\ArrayNotation;
  13. use PhpCsFixer\Tests\Test\AbstractFixerTestCase;
  14. /**
  15. * @author Sebastiaan Stok <s.stok@rollerscapes.net>
  16. *
  17. * @internal
  18. *
  19. * @covers \PhpCsFixer\Fixer\ArrayNotation\NoTrailingCommaInSinglelineArrayFixer
  20. */
  21. final class NoTrailingCommaInSinglelineArrayFixerTest 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 function provideFixCases(): array
  31. {
  32. return [
  33. ['<?php $x = array();'],
  34. ['<?php $x = array("foo");'],
  35. [
  36. '<?php $x = array("foo");',
  37. '<?php $x = array("foo", );',
  38. ],
  39. ["<?php \$x = array(\n'foo', \n);"],
  40. ["<?php \$x = array('foo', \n);"],
  41. ["<?php \$x = array(array('foo'), \n);", "<?php \$x = array(array('foo',), \n);"],
  42. ["<?php \$x = array(array('foo',\n), \n);"],
  43. [
  44. '<?php
  45. $test = array("foo", <<<TWIG
  46. foo
  47. TWIG
  48. , $twig);',
  49. '<?php
  50. $test = array("foo", <<<TWIG
  51. foo
  52. TWIG
  53. , $twig, );',
  54. ],
  55. [
  56. '<?php
  57. $test = array(
  58. "foo", <<<TWIG
  59. foo
  60. TWIG
  61. , $twig, );',
  62. ],
  63. [
  64. '<?php
  65. $test = array("foo", <<<\'TWIG\'
  66. foo
  67. TWIG
  68. , $twig);',
  69. '<?php
  70. $test = array("foo", <<<\'TWIG\'
  71. foo
  72. TWIG
  73. , $twig, );',
  74. ],
  75. [
  76. '<?php
  77. $test = array(
  78. "foo", <<<\'TWIG\'
  79. foo
  80. TWIG
  81. , $twig, );',
  82. ],
  83. // Short syntax
  84. ['<?php $x = array([]);'],
  85. ['<?php $x = [[]];'],
  86. ['<?php $x = ["foo"];', '<?php $x = ["foo",];'],
  87. ['<?php $x = bar(["foo"]);', '<?php $x = bar(["foo",]);'],
  88. ["<?php \$x = bar([['foo'],\n]);"],
  89. ["<?php \$x = ['foo', \n];"],
  90. ['<?php $x = array([]);', '<?php $x = array([],);'],
  91. ['<?php $x = [[]];', '<?php $x = [[],];'],
  92. ['<?php $x = [$y[""]];', '<?php $x = [$y[""],];'],
  93. [
  94. '<?php
  95. $test = ["foo", <<<TWIG
  96. foo
  97. TWIG
  98. , $twig];',
  99. '<?php
  100. $test = ["foo", <<<TWIG
  101. foo
  102. TWIG
  103. , $twig, ];',
  104. ],
  105. [
  106. '<?php
  107. $test = [
  108. "foo", <<<TWIG
  109. foo
  110. TWIG
  111. , $twig, ];',
  112. ],
  113. [
  114. '<?php
  115. $test = ["foo", <<<\'TWIG\'
  116. foo
  117. TWIG
  118. , $twig];',
  119. '<?php
  120. $test = ["foo", <<<\'TWIG\'
  121. foo
  122. TWIG
  123. , $twig, ];',
  124. ],
  125. [
  126. '<?php
  127. $test = [
  128. "foo", <<<\'TWIG\'
  129. foo
  130. TWIG
  131. , $twig, ];',
  132. ],
  133. ];
  134. }
  135. /**
  136. * @dataProvider provideFixPhp74Cases
  137. * @requires PHP 7.4
  138. */
  139. public function testFixPhp74(string $expected, ?string $input = null): void
  140. {
  141. $this->doTest($expected, $input);
  142. }
  143. public function provideFixPhp74Cases(): array
  144. {
  145. return [
  146. [
  147. '<?php $x = array(...$foo);',
  148. '<?php $x = array(...$foo, );',
  149. ],
  150. [
  151. '<?php $x = [...$foo];',
  152. '<?php $x = [...$foo, ];',
  153. ],
  154. ];
  155. }
  156. }