123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768 |
- <?php
- declare(strict_types=1);
- /*
- * This file is part of PHP CS Fixer.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- * Dariusz Rumiński <dariusz.ruminski@gmail.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
- namespace PhpCsFixer\Tests\Fixer\Operator;
- use PhpCsFixer\Tests\Test\AbstractFixerTestCase;
- /**
- * @author ntzm
- *
- * @internal
- *
- * @covers \PhpCsFixer\Fixer\AbstractIncrementOperatorFixer
- * @covers \PhpCsFixer\Fixer\Operator\StandardizeIncrementFixer
- *
- * @extends AbstractFixerTestCase<\PhpCsFixer\Fixer\Operator\StandardizeIncrementFixer>
- */
- final class StandardizeIncrementFixerTest extends AbstractFixerTestCase
- {
- /**
- * @dataProvider provideFixCases
- */
- public function testFix(string $expected, ?string $input = null): void
- {
- $this->doTest($expected, $input);
- }
- /**
- * @return iterable<array{0: string, 1?: string}>
- */
- public static function provideFixCases(): iterable
- {
- yield [
- '<?php ++$i;',
- '<?php $i += 1;',
- ];
- yield [
- '<?php ++$i;',
- '<?php $i+=1;',
- ];
- yield [
- '<?php for ($i = 0; $i < $n; ++$i) {};',
- '<?php for ($i = 0; $i < $n; $i += 1) {};',
- ];
- yield [
- '<?php ++$foo->bar;',
- '<?php $foo->bar += 1;',
- ];
- yield [
- '<?php ++$foo->$bar;',
- '<?php $foo->$bar += 1;',
- ];
- yield [
- '<?php ++$foo->$$$bar;',
- '<?php $foo->$$$bar += 1;',
- ];
- yield [
- '<?php ++$foo["bar"];',
- '<?php $foo["bar"] += 1;',
- ];
- yield [
- '<?php ++$foo[baz()];',
- '<?php $foo[baz()] += 1;',
- ];
- yield [
- '<?php ++$foo[$bar->baz];',
- '<?php $foo[$bar->baz] += 1;',
- ];
- yield [
- '<?php ++$foo[$bar];',
- '<?php $foo[$bar] += 1;',
- ];
- yield [
- '<?php ++$foo[Bar::BAZ];',
- '<?php $foo[Bar::BAZ] += 1;',
- ];
- yield [
- '<?php echo $foo[++$i];',
- '<?php echo $foo[$i += 1];',
- ];
- yield [
- '<?php echo ++$foo[$bar[$baz]];',
- '<?php echo $foo[$bar[$baz]] += 1;',
- ];
- yield [
- '<?php ++$$foo;',
- '<?php $$foo += 1;',
- ];
- yield [
- '<?php ++$$$$foo;',
- '<?php $$$$foo += 1;',
- ];
- yield [
- '<?php ++${$foo};',
- '<?php ${$foo} += 1;',
- ];
- yield [
- '<?php ++$$${$foo};',
- '<?php $$${$foo} += 1;',
- ];
- yield [
- '<?php ++$a[$b];',
- '<?php $a[$b] += 1;',
- ];
- yield [
- '<?php ++$a[++$b];',
- '<?php $a[$b += 1] += 1;',
- ];
- yield [
- '<?php foo(++$a);',
- '<?php foo($a += 1);',
- ];
- yield [
- '<?php foo(++$a, $bar);',
- '<?php foo($a += 1, $bar);',
- ];
- yield [
- '<?php ++$foo->{++$a};',
- '<?php $foo->{$a += 1} += 1;',
- ];
- yield [
- '<?php ++${++$a};',
- '<?php ${$a += 1} += 1;',
- ];
- yield [
- '<?php ++$i ?>',
- '<?php $i += 1 ?>',
- ];
- yield [
- '<?php $a = $b ? ++$c : ++$d;',
- '<?php $a = $b ? $c += 1 : $d += 1;',
- ];
- yield [
- '<?php ++$a->{++$b}[++$c];',
- '<?php $a->{$b += 1}[$c += 1] += 1;',
- ];
- yield [
- '<?php (++$i);',
- '<?php ($i += 1);',
- ];
- yield [
- '<?php (((++$i)));',
- '<?php ((($i += 1)));',
- ];
- yield [
- '<?php ++$a->b->$c;',
- '<?php $a->b->$c += 1;',
- ];
- yield [
- '<?php ++$i/* foo */;',
- '<?php $i +=/* foo */1;',
- ];
- yield [
- '<?php ++$i/* foo *//* bar */;',
- '<?php $i /* foo */ += /* bar */1;',
- ];
- yield [
- '<?php ++$i/** foo *//** bar */;',
- '<?php $i /** foo */ += /** bar */1;',
- ];
- yield [
- "<?php ++\$i// foo\n;",
- "<?php \$i += // foo\n1;",
- ];
- yield [
- '<?php --$i;',
- '<?php $i -= 1;',
- ];
- yield [
- '<?php --$i;',
- '<?php $i-=1;',
- ];
- yield [
- '<?php for ($i = 0; $i < $n; --$i) {};',
- '<?php for ($i = 0; $i < $n; $i -= 1) {};',
- ];
- yield [
- '<?php --$foo->bar;',
- '<?php $foo->bar -= 1;',
- ];
- yield [
- '<?php --$foo->$bar;',
- '<?php $foo->$bar -= 1;',
- ];
- yield [
- '<?php --$foo->$$$bar;',
- '<?php $foo->$$$bar -= 1;',
- ];
- yield [
- '<?php --$foo["bar"];',
- '<?php $foo["bar"] -= 1;',
- ];
- yield [
- '<?php --$foo[baz()];',
- '<?php $foo[baz()] -= 1;',
- ];
- yield [
- '<?php --$foo[$bar->baz];',
- '<?php $foo[$bar->baz] -= 1;',
- ];
- yield [
- '<?php --$foo[$bar];',
- '<?php $foo[$bar] -= 1;',
- ];
- yield [
- '<?php --$foo[Bar::BAZ];',
- '<?php $foo[Bar::BAZ] -= 1;',
- ];
- yield [
- '<?php echo $foo[--$i];',
- '<?php echo $foo[$i -= 1];',
- ];
- yield [
- '<?php echo --$foo->{$bar};',
- '<?php echo $foo->{$bar} -= 1;',
- ];
- yield [
- '<?php echo --$foo->{$bar->{$baz}};',
- '<?php echo $foo->{$bar->{$baz}} -= 1;',
- ];
- yield [
- '<?php echo --$foo[$bar[$baz]];',
- '<?php echo $foo[$bar[$baz]] -= 1;',
- ];
- yield [
- '<?php --$$foo;',
- '<?php $$foo -= 1;',
- ];
- yield [
- '<?php --$$$$foo;',
- '<?php $$$$foo -= 1;',
- ];
- yield [
- '<?php --${$foo};',
- '<?php ${$foo} -= 1;',
- ];
- yield [
- '<?php --$$${$foo};',
- '<?php $$${$foo} -= 1;',
- ];
- yield [
- '<?php --$a[$b];',
- '<?php $a[$b] -= 1;',
- ];
- yield [
- '<?php --$a[--$b];',
- '<?php $a[$b -= 1] -= 1;',
- ];
- yield [
- '<?php foo(--$a);',
- '<?php foo($a -= 1);',
- ];
- yield [
- '<?php foo(--$a, $bar);',
- '<?php foo($a -= 1, $bar);',
- ];
- yield [
- '<?php --$foo->{--$a};',
- '<?php $foo->{$a -= 1} -= 1;',
- ];
- yield [
- '<?php --${--$a};',
- '<?php ${$a -= 1} -= 1;',
- ];
- yield [
- '<?php --$i ?>',
- '<?php $i -= 1 ?>',
- ];
- yield [
- '<?php $a = $b ? --$c : --$d;',
- '<?php $a = $b ? $c -= 1 : $d -= 1;',
- ];
- yield [
- '<?php --$a->{--$b}[--$c];',
- '<?php $a->{$b -= 1}[$c -= 1] -= 1;',
- ];
- yield [
- '<?php (--$i);',
- '<?php ($i -= 1);',
- ];
- yield [
- '<?php (((--$i)));',
- '<?php ((($i -= 1)));',
- ];
- yield [
- '<?php --$a->b->$c;',
- '<?php $a->b->$c -= 1;',
- ];
- yield [
- '<?php --$i/* foo */;',
- '<?php $i -=/* foo */1;',
- ];
- yield [
- '<?php --$i/* foo *//* bar */;',
- '<?php $i /* foo */ -= /* bar */1;',
- ];
- yield [
- '<?php --$i/** foo *//** bar */;',
- '<?php $i /** foo */ -= /** bar */1;',
- ];
- yield [
- "<?php --\$i// foo\n;",
- "<?php \$i -= // foo\n1;",
- ];
- yield [
- '<?php $i + 1;',
- ];
- yield [
- '<?php $i - 1;',
- ];
- yield [
- '<?php $i = 1;',
- ];
- yield [
- '<?php $i = -1;',
- ];
- yield [
- '<?php $i += 1.0;',
- ];
- yield [
- '<?php $i += "1";',
- ];
- yield [
- '<?php $i -= 1.0;',
- ];
- yield [
- '<?php $i -= "1";',
- ];
- yield [
- '<?php $i += 1 * 2;',
- ];
- yield [
- '<?php $i += 1 ** 2;',
- ];
- yield [
- '<?php $i += 1 / 2;',
- ];
- yield [
- '<?php $i += 1 + 2;',
- ];
- yield [
- '<?php $i += 1 - 2;',
- ];
- yield [
- '<?php $i += 1 % 2;',
- ];
- yield [
- '<?php $i += 1 ?: 2;',
- ];
- yield [
- '<?php $i += 1 & 2;',
- ];
- yield [
- '<?php $i += 1 ^ 2;',
- ];
- yield [
- '<?php $i += 1 >> 2;',
- ];
- yield [
- '<?php $i += 1 << 2;',
- ];
- yield [
- '<?php $i += 1 && true;',
- ];
- yield [
- '<?php $i += 1 || true;',
- ];
- yield [
- '<?php $i += 1 and true;',
- ];
- yield [
- '<?php $i += 1 or true;',
- ];
- yield [
- '<?php $i += 1 xor true;',
- ];
- yield [
- '<?php $i += 1 === 2;',
- ];
- yield [
- '<?php $i += 1 == 2;',
- ];
- yield [
- '<?php $i += 1 !== 2;',
- ];
- yield [
- '<?php $i += 1 != 2;',
- ];
- yield [
- '<?php $i += 1 < 2;',
- ];
- yield [
- '<?php $i += 1 > 2;',
- ];
- yield [
- '<?php $i += 1 <= 2;',
- ];
- yield [
- '<?php $i += 1 >= 2;',
- ];
- yield [
- '<?php $i += 1 <> 2;',
- ];
- yield [
- '<?php $i -= 1 * 2;',
- ];
- yield [
- '<?php $i -= 1 ** 2;',
- ];
- yield [
- '<?php $i -= 1 / 2;',
- ];
- yield [
- '<?php $i -= 1 + 2;',
- ];
- yield [
- '<?php $i -= 1 - 2;',
- ];
- yield [
- '<?php $i -= 1 % 2;',
- ];
- yield [
- '<?php $i -= 1 ?: 2;',
- ];
- yield [
- '<?php $i -= 1 & 2;',
- ];
- yield [
- '<?php $i -= 1 ^ 2;',
- ];
- yield [
- '<?php $i -= 1 >> 2;',
- ];
- yield [
- '<?php $i -= 1 << 2;',
- ];
- yield [
- '<?php $i -= 1 && true;',
- ];
- yield [
- '<?php $i -= 1 || true;',
- ];
- yield [
- '<?php $i -= 1 and true;',
- ];
- yield [
- '<?php $i -= 1 or true;',
- ];
- yield [
- '<?php $i -= 1 xor true;',
- ];
- yield [
- '<?php $i -= 1 === 2;',
- ];
- yield [
- '<?php $i -= 1 == 2;',
- ];
- yield [
- '<?php $i -= 1 !== 2;',
- ];
- yield [
- '<?php $i -= 1 != 2;',
- ];
- yield [
- '<?php $i -= 1 < 2;',
- ];
- yield [
- '<?php $i -= 1 > 2;',
- ];
- yield [
- '<?php $i -= 1 <= 2;',
- ];
- yield [
- '<?php $i -= 1 >= 2;',
- ];
- yield [
- '<?php $i -= 1 <> 2;',
- ];
- yield [
- '<?php #1
- #2
- ++$i#3
- #4
- #5
- #6
- #7
- ;#8
- #9',
- '<?php #1
- #2
- $i#3
- #4
- +=#5
- #6
- 1#7
- ;#8
- #9',
- ];
- yield [
- '<?php $a -= ($a -= ($a -= (--$a)));',
- '<?php $a -= ($a -= ($a -= ($a -= 1)));',
- ];
- yield [
- '<?php --$a[foo($d,foo($c))];',
- '<?php $a[foo($d,foo($c))] -= 1;',
- ];
- yield [
- '<?php $i *= 1; ++$i;',
- '<?php $i *= 1; $i += 1;',
- ];
- yield [
- '<?php ++A::$b;',
- '<?php A::$b += 1;',
- ];
- yield [
- '<?php ++\A::$b;',
- '<?php \A::$b += 1;',
- ];
- yield [
- '<?php ++\A\B\C::$d;',
- '<?php \A\B\C::$d += 1;',
- ];
- yield [
- '<?php ++$a::$b;',
- '<?php $a::$b += 1;',
- ];
- yield [
- '<?php ++$a::$b->$c;',
- '<?php $a::$b->$c += 1;',
- ];
- yield [
- '<?php class Foo {
- public static function bar() {
- ++self::$v1;
- ++static::$v2;
- }
- }',
- '<?php class Foo {
- public static function bar() {
- self::$v1 += 1;
- static::$v2 += 1;
- }
- }',
- ];
- yield [
- '<?php $i -= 1 ?? 2;',
- ];
- yield [
- '<?php $i += 1 ?? 2;',
- ];
- yield [
- '<?php $i -= 1 <=> 2;',
- ];
- yield [
- '<?php $i += 1 <=> 2;',
- ];
- yield [
- '<?php ++$a::$b::$c;',
- '<?php $a::$b::$c += 1;',
- ];
- yield [
- '<?php ++$a->$b::$c;',
- '<?php $a->$b::$c += 1;',
- ];
- yield [
- '<?php ++$a::${$b}::$c;',
- '<?php $a::${$b}::$c += 1;',
- ];
- yield [
- '<?php ++$a->$b::$c->${$d}->${$e}::f(1 + 2 * 3)->$g::$h;',
- '<?php $a->$b::$c->${$d}->${$e}::f(1 + 2 * 3)->$g::$h += 1;',
- ];
- yield [
- '<?php $i += 1_0;',
- ];
- }
- /**
- * @dataProvider provideFixPre80Cases
- *
- * @requires PHP <8.0
- */
- public function testFixPre80(string $expected, ?string $input = null): void
- {
- $this->doTest($expected, $input);
- }
- /**
- * @return iterable<array{string, string}>
- */
- public static function provideFixPre80Cases(): iterable
- {
- yield [
- '<?php echo ++$foo->{$bar};',
- '<?php echo $foo->{$bar} += 1;',
- ];
- yield [
- '<?php echo ++$foo->{$bar->{$baz}};',
- '<?php echo $foo->{$bar->{$baz}} += 1;',
- ];
- yield [
- '<?php ++$a{$b};',
- '<?php $a{$b} += 1;',
- ];
- yield [
- '<?php --$a{$b};',
- '<?php $a{$b} -= 1;',
- ];
- }
- }
|