NoUselessSprintfFixerTest.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  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. * @internal
  15. *
  16. * @covers \PhpCsFixer\Fixer\FunctionNotation\NoUselessSprintfFixer
  17. */
  18. final class NoUselessSprintfFixerTest extends AbstractFixerTestCase
  19. {
  20. /**
  21. * @dataProvider provideFixCases
  22. *
  23. * @param string $expected
  24. * @param null|string $input
  25. */
  26. public function testFix($expected, $input = null)
  27. {
  28. $this->doTest($expected, $input);
  29. }
  30. public function provideFixCases()
  31. {
  32. yield 'simple' => [
  33. '<?php echo "bar";',
  34. '<?php echo sprintf("bar");',
  35. ];
  36. yield 'simple II' => [
  37. "<?php echo 'bar' ?>",
  38. "<?php echo sprintf('bar') ?>",
  39. ];
  40. yield 'simple III' => [
  41. '<?php echo $bar;',
  42. '<?php echo sprintf($bar);',
  43. ];
  44. yield 'simple IV' => [
  45. '<?php echo 1;',
  46. '<?php echo sprintf(1);',
  47. ];
  48. yield 'minimal' => [
  49. '<?php $foo;',
  50. '<?php sprintf($foo);',
  51. ];
  52. yield 'case insensitive' => [
  53. '<?php echo "bar";',
  54. '<?php echo SPRINTF("bar");',
  55. ];
  56. yield 'nested' => [
  57. '<?php echo /* test */"bar";',
  58. '<?php echo sprintf(sprintf(sprintf(/* test */sprintf(sprintf(sprintf("bar"))))));',
  59. ];
  60. yield [
  61. '<?php namespace Foo {
  62. function sprintf($foo) {
  63. echo $foo;
  64. }
  65. }',
  66. ];
  67. yield [
  68. '<?php namespace Foo;
  69. function sprintf($foo) {
  70. echo $foo;
  71. }
  72. ',
  73. ];
  74. yield [
  75. '<?php
  76. echo \Foo\sprintf("abc");
  77. echo $bar->sprintf($foo);
  78. echo Bar::sprintf($foo);
  79. echo sprint(...$foo);
  80. echo sprint("%d", 1);
  81. echo sprint("%d%d%d", 1, 2, 3);
  82. echo sprint();
  83. ',
  84. ];
  85. if (\PHP_VERSION_ID >= 70000) {
  86. yield [
  87. '<?php echo sprint[2]("foo");
  88. ',
  89. ];
  90. }
  91. if (\PHP_VERSION_ID > 70300) {
  92. yield 'trailing comma' => [
  93. '<?php echo "bar";',
  94. '<?php echo sprintf("bar",);',
  95. ];
  96. }
  97. if (\PHP_VERSION_ID < 80000) {
  98. yield [
  99. '<?php echo "bar";',
  100. '<?php echo \ sprintf("bar");',
  101. ];
  102. yield [
  103. '<?php echo A /* 1 */ \ B \ sprintf("bar");',
  104. ];
  105. }
  106. }
  107. }