SwitchCaseSemicolonToColonFixerTest.php 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  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\ControlStructure;
  12. use PhpCsFixer\Tests\Test\AbstractFixerTestCase;
  13. /**
  14. * @author SpacePossum
  15. *
  16. * @internal
  17. *
  18. * @covers \PhpCsFixer\Fixer\ControlStructure\SwitchCaseSemicolonToColonFixer
  19. */
  20. final class SwitchCaseSemicolonToColonFixerTest 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. public function provideFixCases()
  33. {
  34. return [
  35. [
  36. '<?php
  37. switch (1) {
  38. case f(function () { return; }):
  39. break;
  40. }
  41. ',
  42. '<?php
  43. switch (1) {
  44. case f(function () { return; });
  45. break;
  46. }
  47. ',
  48. ],
  49. [
  50. '<?php
  51. switch ($a) {
  52. case 42:
  53. break;
  54. }
  55. ',
  56. '<?php
  57. switch ($a) {
  58. case 42;
  59. break;
  60. }
  61. ',
  62. ],
  63. [
  64. '<?php
  65. switch ($a) {
  66. case 42:
  67. break;
  68. case 1:
  69. switch ($a) {
  70. case 42:
  71. break;
  72. default :
  73. echo 1;
  74. }
  75. }',
  76. '<?php
  77. switch ($a) {
  78. case 42;
  79. break;
  80. case 1:
  81. switch ($a) {
  82. case 42;
  83. break;
  84. default ;
  85. echo 1;
  86. }
  87. }',
  88. ],
  89. [
  90. '<?php
  91. switch ($a) {
  92. case 42:;;// NoEmptyStatementFixer should clean this up (partly)
  93. break;
  94. }
  95. ',
  96. '<?php
  97. switch ($a) {
  98. case 42;;;// NoEmptyStatementFixer should clean this up (partly)
  99. break;
  100. }
  101. ',
  102. ],
  103. [
  104. '<?php
  105. switch ($a) {
  106. case $b ? "c" : "d" :
  107. break;
  108. }
  109. ',
  110. '<?php
  111. switch ($a) {
  112. case $b ? "c" : "d" ;
  113. break;
  114. }
  115. ',
  116. ],
  117. [
  118. '<?php
  119. switch ($a) {
  120. case $b ? "c" : "d": break;
  121. }
  122. ',
  123. '<?php
  124. switch ($a) {
  125. case $b ? "c" : "d"; break;
  126. }
  127. ',
  128. ],
  129. [
  130. '<?php
  131. switch ($a) {
  132. case $b ? "c" : "this" ? "is" : "ugly":
  133. break;
  134. }
  135. ',
  136. '<?php
  137. switch ($a) {
  138. case $b ? "c" : "this" ? "is" : "ugly";
  139. break;
  140. }
  141. ',
  142. ],
  143. [
  144. '<?php
  145. switch($a) {
  146. case (int) $a < 1: {
  147. echo "leave ; alone";
  148. break;
  149. }
  150. case ($a < 2)/* test */ : {
  151. echo "fix 1";
  152. break;
  153. }
  154. case (3):{
  155. echo "fix 2";
  156. break;
  157. }
  158. case /**/(/**/ // test
  159. 4
  160. /**/)//
  161. /**/: {
  162. echo "fix 3";
  163. break;
  164. }
  165. case (((int)$b) + 4.1) : {
  166. echo "fix 4";
  167. break;
  168. }
  169. case ($b + 1) * 2 : {;;
  170. echo "leave alone";
  171. break;
  172. }
  173. }
  174. ',
  175. '<?php
  176. switch($a) {
  177. case (int) $a < 1; {
  178. echo "leave ; alone";
  179. break;
  180. }
  181. case ($a < 2)/* test */ ; {
  182. echo "fix 1";
  183. break;
  184. }
  185. case (3);{
  186. echo "fix 2";
  187. break;
  188. }
  189. case /**/(/**/ // test
  190. 4
  191. /**/)//
  192. /**/; {
  193. echo "fix 3";
  194. break;
  195. }
  196. case (((int)$b) + 4.1) ; {
  197. echo "fix 4";
  198. break;
  199. }
  200. case ($b + 1) * 2 ; {;;
  201. echo "leave alone";
  202. break;
  203. }
  204. }
  205. ',
  206. ],
  207. ];
  208. }
  209. /**
  210. * @param string $expected
  211. * @param null|string $input
  212. *
  213. * @dataProvider provideFix70Cases
  214. * @requires PHP 7.0
  215. */
  216. public function testFix70($expected, $input = null)
  217. {
  218. $this->doTest($expected, $input);
  219. }
  220. public function provideFix70Cases()
  221. {
  222. return [
  223. 'nested switch in switch case' => [
  224. '<?php
  225. switch (1) {
  226. case new class {public function A(){echo 1;switch(time()){case 1: echo 2;}}}:break;}
  227. ',
  228. '<?php
  229. switch (1) {
  230. case new class {public function A(){echo 1;switch(time()){case 1; echo 2;}}};break;}
  231. ',
  232. ],
  233. [
  234. '<?php
  235. switch (1) {
  236. case $b ? f(function () { return; }) : new class {public function A(){echo 1;}} :
  237. break;
  238. }
  239. ',
  240. '<?php
  241. switch (1) {
  242. case $b ? f(function () { return; }) : new class {public function A(){echo 1;}} ;
  243. break;
  244. }
  245. ',
  246. ],
  247. ];
  248. }
  249. }