SimpleToComplexStringVariableFixerTest.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  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\StringNotation;
  12. use PhpCsFixer\Tests\Test\AbstractFixerTestCase;
  13. /**
  14. * @author Dave van der Brugge <dmvdbrugge@gmail.com>
  15. *
  16. * @internal
  17. *
  18. * @covers \PhpCsFixer\Fixer\StringNotation\SimpleToComplexStringVariableFixer
  19. */
  20. final class SimpleToComplexStringVariableFixerTest extends AbstractFixerTestCase
  21. {
  22. /**
  23. * @param string $expected
  24. * @param null|string $input
  25. *
  26. * @dataProvider provideFixCases
  27. */
  28. public function testFix($expected, $input = null)
  29. {
  30. $this->doTest($expected, $input);
  31. }
  32. /**
  33. * @return array
  34. */
  35. public function provideFixCases()
  36. {
  37. return [
  38. 'basic fix' => [
  39. <<<'EXPECTED'
  40. <?php
  41. $name = "World";
  42. echo "Hello {$name}!";
  43. EXPECTED
  44. ,
  45. <<<'INPUT'
  46. <?php
  47. $name = "World";
  48. echo "Hello ${name}!";
  49. INPUT
  50. ,
  51. ],
  52. 'heredoc' => [
  53. <<<'EXPECTED'
  54. <?php
  55. $name = 'World';
  56. echo <<<TEST
  57. Hello {$name}!
  58. TEST;
  59. EXPECTED
  60. ,
  61. <<<'INPUT'
  62. <?php
  63. $name = 'World';
  64. echo <<<TEST
  65. Hello ${name}!
  66. TEST;
  67. INPUT
  68. ,
  69. ],
  70. 'implicit' => [
  71. <<<'EXPECTED'
  72. <?php
  73. $name = 'World';
  74. echo "Hello $name!";
  75. EXPECTED
  76. ,
  77. ],
  78. 'implicit again' => [
  79. <<<'EXPECTED'
  80. <?php
  81. $name = 'World';
  82. echo "Hello { $name }!";
  83. EXPECTED
  84. ,
  85. ],
  86. 'escaped' => [
  87. <<<'EXPECTED'
  88. <?php
  89. $name = 'World';
  90. echo "Hello \${name}";
  91. EXPECTED
  92. ,
  93. ],
  94. 'double dollar' => [
  95. <<<'EXPECTED'
  96. <?php
  97. $name = 'World';
  98. echo "Hello \${$name}";
  99. EXPECTED
  100. ,
  101. <<<'INPUT'
  102. <?php
  103. $name = 'World';
  104. echo "Hello $${name}";
  105. INPUT
  106. ,
  107. ],
  108. 'double dollar heredoc' => [
  109. <<<'EXPECTED'
  110. <?php
  111. $name = 'World';
  112. echo <<<TEST
  113. Hello \${$name}!
  114. TEST;
  115. EXPECTED
  116. ,
  117. <<<'INPUT'
  118. <?php
  119. $name = 'World';
  120. echo <<<TEST
  121. Hello $${name}!
  122. TEST;
  123. INPUT
  124. ,
  125. ],
  126. 'double dollar single quote' => [
  127. <<<'EXPECTED'
  128. <?php
  129. $name = 'World';
  130. echo 'Hello $${name}';
  131. EXPECTED
  132. ,
  133. ],
  134. ];
  135. }
  136. }