IncrementStyleFixerTest.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  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\Operator;
  12. use PhpCsFixer\Tests\Test\AbstractFixerTestCase;
  13. /**
  14. * @author Gregor Harlan <gharlan@web.de>
  15. * @author Kuba Werłos <werlos@gmail.com>
  16. *
  17. * @internal
  18. *
  19. * @covers \PhpCsFixer\Fixer\Operator\IncrementStyleFixer
  20. */
  21. final class IncrementStyleFixerTest extends AbstractFixerTestCase
  22. {
  23. /**
  24. * @param string $expected
  25. * @param null|string $input
  26. *
  27. * @dataProvider provideFixPreIncrementCases
  28. */
  29. public function testFixPreIncrement($expected, $input = null)
  30. {
  31. $this->fixer->configure(['style' => 'pre']);
  32. $this->doTest($expected, $input);
  33. }
  34. /**
  35. * @param string $expected
  36. * @param null|string $input
  37. *
  38. * @dataProvider provideFixPostIncrementCases
  39. */
  40. public function testFixPostIncrement($expected, $input = null)
  41. {
  42. $this->fixer->configure(['style' => 'post']);
  43. $this->doTest($expected, $input);
  44. }
  45. public function provideFixPostIncrementCases()
  46. {
  47. return array_map(static function (array $case) {
  48. return array_reverse($case);
  49. }, $this->provideFixPreIncrementCases());
  50. }
  51. public function provideFixPreIncrementCases()
  52. {
  53. return [
  54. [
  55. '<?php ++$a;',
  56. '<?php $a++;',
  57. ],
  58. [
  59. '<?php ++$$a;',
  60. '<?php $$a++;',
  61. ],
  62. [
  63. '<?php ++${"a"};',
  64. '<?php ${"a"}++;',
  65. ],
  66. [
  67. '<?php --$a;',
  68. '<?php $a--;',
  69. ],
  70. [
  71. '<?php foo(); ++$a;',
  72. '<?php foo(); $a++;',
  73. ],
  74. [
  75. '<?php if (true) { ++$a; }',
  76. '<?php if (true) { $a++; }',
  77. ],
  78. [
  79. '<?php if (true) {} ++$a;',
  80. '<?php if (true) {} $a++;',
  81. ],
  82. [
  83. '<?php for ($i = 0; $i < $count; ++$i) {}',
  84. '<?php for ($i = 0; $i < $count; $i++) {}',
  85. ],
  86. [
  87. '<?php ++$a->foo;',
  88. '<?php $a->foo++;',
  89. ],
  90. [
  91. '<?php ++$a->{"foo"};',
  92. '<?php $a->{"foo"}++;',
  93. ],
  94. [
  95. '<?php ++$a->$b;',
  96. '<?php $a->$b++;',
  97. ],
  98. [
  99. '<?php ++Foo\Bar::$bar;',
  100. '<?php Foo\Bar::$bar++;',
  101. ],
  102. [
  103. '<?php ++$a::$bar;',
  104. '<?php $a::$bar++;',
  105. ],
  106. [
  107. '<?php ++$a[0];',
  108. '<?php $a[0]++;',
  109. ],
  110. [
  111. '<?php ++$a[$b];',
  112. '<?php $a[$b]++;',
  113. ],
  114. [
  115. '<?php ++${$a}->{$b."foo"}->bar[$c]->$baz;',
  116. '<?php ${$a}->{$b."foo"}->bar[$c]->$baz++;',
  117. ],
  118. ['<?php $a = $b++;'],
  119. ['<?php $a + $b++;'],
  120. ['<?php $a++ + $b;'],
  121. ['<?php foo($b++);'],
  122. ['<?php foo($a, $b++);'],
  123. ['<?php $a[$b++];'],
  124. ['<?php echo $a++;'],
  125. ['<?php $a = ++$b;'],
  126. ['<?php $a + ++$b;'],
  127. ['<?php ++$a + $b;'],
  128. ['<?php foo(++$b);'],
  129. ['<?php foo($a, ++$b);'],
  130. ['<?php $a[++$b];'],
  131. ['<?php echo ++$a;'],
  132. ];
  133. }
  134. }