/vendor/fabpot/php-cs-fixer/Symfony/CS/Tests/Fixer/Symfony/UnneededControlParenthesesFixerTest.php

https://gitlab.com/yousafsyed/easternglamor · PHP · 391 lines · 360 code · 11 blank · 20 comment · 3 complexity · faa071930fa6b31a2421488dba2efbbf MD5 · raw file

  1. <?php
  2. /*
  3. * This file is part of the PHP CS utility.
  4. *
  5. * (c) Fabien Potencier <fabien@symfony.com>
  6. *
  7. * This source file is subject to the MIT license that is bundled
  8. * with this source code in the file LICENSE.
  9. */
  10. namespace Symfony\CS\Tests\Fixer\Symfony;
  11. use Symfony\CS\Fixer\Symfony\UnneededControlParenthesesFixer;
  12. use Symfony\CS\Tests\Fixer\AbstractFixerTestBase;
  13. /**
  14. * @author Sullivan Senechal <soullivaneuh@gmail.com>
  15. *
  16. * @internal
  17. */
  18. final class UnneededControlParenthesesFixerTest extends AbstractFixerTestBase
  19. {
  20. private static $defaultStatements = null;
  21. public static function setUpBeforeClass()
  22. {
  23. $controlStatementsProperty = new \ReflectionProperty('Symfony\CS\Fixer\Symfony\UnneededControlParenthesesFixer', 'controlStatements');
  24. $controlStatementsProperty->setAccessible(true);
  25. self::$defaultStatements = $controlStatementsProperty->getValue(null);
  26. }
  27. /**
  28. * @dataProvider provideFixCases
  29. */
  30. public function testFix($expected, $input = null)
  31. {
  32. // PHP <5.5 BC
  33. if (version_compare(PHP_VERSION, '5.5', '<') && false !== strpos($input, 'yield')) {
  34. $input = null;
  35. }
  36. // Default config. Fixes all statements.
  37. UnneededControlParenthesesFixer::configure(self::$defaultStatements);
  38. $this->makeTest($expected, $input);
  39. // Empty array config. Should not fix anything.
  40. UnneededControlParenthesesFixer::configure(array());
  41. $this->makeTest($expected, null);
  42. // Test with only one statement
  43. foreach (self::$defaultStatements as $statement) {
  44. UnneededControlParenthesesFixer::configure(array($statement));
  45. $this->makeTest(
  46. $expected,
  47. $input && false !== strpos($input, $statement) ? $input : null
  48. );
  49. }
  50. }
  51. public function provideFixCases()
  52. {
  53. return array(
  54. array(
  55. '<?php
  56. yield "prod";
  57. ',
  58. ),
  59. array(
  60. '<?php
  61. yield (1 + 2) * 10;
  62. ',
  63. ),
  64. array(
  65. '<?php
  66. yield (1 + 2) * 10;
  67. ',
  68. '<?php
  69. yield ((1 + 2) * 10);
  70. ',
  71. ),
  72. array(
  73. '<?php
  74. yield "prod";
  75. ',
  76. '<?php
  77. yield ("prod");
  78. ',
  79. ),
  80. array(
  81. '<?php
  82. yield 2;
  83. ',
  84. '<?php
  85. yield(2);
  86. ',
  87. ),
  88. array(
  89. '<?php
  90. $a = (yield $x);
  91. ',
  92. '<?php
  93. $a = (yield($x));
  94. ',
  95. ),
  96. array(
  97. '<?php
  98. clone $object;
  99. ',
  100. ),
  101. array(
  102. '<?php
  103. clone new Foo();
  104. ',
  105. ),
  106. array(
  107. '<?php
  108. clone $object;
  109. ',
  110. '<?php
  111. clone ($object);
  112. ',
  113. ),
  114. array(
  115. '<?php
  116. clone new Foo();
  117. ',
  118. '<?php
  119. clone (new Foo());
  120. ',
  121. ),
  122. array(
  123. '<?php
  124. foo(clone $a);
  125. foo(clone $a, 1);
  126. $a = $b ? clone $b : $c;
  127. ',
  128. '<?php
  129. foo(clone($a));
  130. foo(clone($a), 1);
  131. $a = $b ? clone($b) : $c;
  132. ',
  133. ),
  134. array(
  135. '<?php
  136. echo "foo";
  137. print "foo";
  138. ',
  139. ),
  140. array(
  141. '<?php
  142. echo (1 + 2) . $foo;
  143. print (1 + 2) . $foo;
  144. ',
  145. ),
  146. array(
  147. '<?php
  148. echo (1 + 2) * 10, "\n";
  149. ',
  150. ),
  151. array(
  152. '<?php echo (1 + 2) * 10, "\n" ?>',
  153. ),
  154. array(
  155. '<?php
  156. echo (1 + 2) * 10, "\n";
  157. ',
  158. '<?php
  159. echo ((1 + 2) * 10, "\n");
  160. ',
  161. ),
  162. array(
  163. '<?php
  164. echo (1 + 2) * 10, "\n";
  165. ',
  166. '<?php
  167. echo((1 + 2) * 10, "\n");
  168. ',
  169. ),
  170. array(
  171. '<?php echo "foo" ?>',
  172. '<?php echo ("foo") ?>',
  173. ),
  174. array(
  175. '<?php print "foo" ?>',
  176. '<?php print ("foo") ?>',
  177. ),
  178. array(
  179. '<?php
  180. echo "foo";
  181. print "foo";
  182. ',
  183. '<?php
  184. echo ("foo");
  185. print ("foo");
  186. ',
  187. ),
  188. array(
  189. '<?php
  190. echo "foo";
  191. print "foo";
  192. ',
  193. '<?php
  194. echo("foo");
  195. print("foo");
  196. ',
  197. ),
  198. array(
  199. '<?php
  200. echo 2;
  201. print 2;
  202. ',
  203. '<?php
  204. echo(2);
  205. print(2);
  206. ',
  207. ),
  208. array(
  209. '<?php
  210. echo $a ? $b : $c;
  211. echo ($a ? $b : $c) ? $d : $e;
  212. echo 10 * (2 + 3);
  213. echo ("foo"), ("bar");
  214. echo my_awesome_function("foo");
  215. echo $this->getOutput(1);
  216. ',
  217. '<?php
  218. echo ($a ? $b : $c);
  219. echo ($a ? $b : $c) ? $d : $e;
  220. echo 10 * (2 + 3);
  221. echo ("foo"), ("bar");
  222. echo my_awesome_function("foo");
  223. echo $this->getOutput(1);
  224. ',
  225. ),
  226. array(
  227. '<?php
  228. return "prod";
  229. ',
  230. ),
  231. array(
  232. '<?php
  233. return (1 + 2) * 10;
  234. ',
  235. ),
  236. array(
  237. '<?php
  238. return (1 + 2) * 10;
  239. ',
  240. '<?php
  241. return ((1 + 2) * 10);
  242. ',
  243. ),
  244. array(
  245. '<?php
  246. return "prod";
  247. ',
  248. '<?php
  249. return ("prod");
  250. ',
  251. ),
  252. array(
  253. '<?php
  254. return $x;
  255. ',
  256. '<?php
  257. return($x);
  258. ',
  259. ),
  260. array(
  261. '<?php
  262. return 2;
  263. ',
  264. '<?php
  265. return(2);
  266. ',
  267. ),
  268. array(
  269. '<?php
  270. switch ($a) {
  271. case "prod":
  272. break;
  273. }
  274. ',
  275. ),
  276. array(
  277. '<?php
  278. switch ($a) {
  279. case "prod":
  280. break;
  281. }
  282. ',
  283. '<?php
  284. switch ($a) {
  285. case ("prod"):
  286. break;
  287. }
  288. ',
  289. ),
  290. array(
  291. '<?php
  292. case $x;
  293. ',
  294. '<?php
  295. case($x);
  296. ',
  297. ),
  298. array(
  299. '<?php
  300. case 2;
  301. ',
  302. '<?php
  303. case(2);
  304. ',
  305. ),
  306. array(
  307. '<?php
  308. $a = 5.1;
  309. $b = 1.0;
  310. switch($a) {
  311. case (int) $a < 1 : {
  312. echo "leave alone";
  313. break;
  314. }
  315. case $a < 2/* test */: {
  316. echo "fix 1";
  317. break;
  318. }
  319. case 3 : {
  320. echo "fix 2";
  321. break;
  322. }
  323. case /**//**/ // test
  324. 4
  325. /**///
  326. /**/: {
  327. echo "fix 3";
  328. break;
  329. }
  330. case ((int)$b) + 4.1: {
  331. echo "fix 4";
  332. break;
  333. }
  334. case ($b + 1) * 2: {
  335. echo "leave alone";
  336. break;
  337. }
  338. }
  339. ',
  340. '<?php
  341. $a = 5.1;
  342. $b = 1.0;
  343. switch($a) {
  344. case (int) $a < 1 : {
  345. echo "leave alone";
  346. break;
  347. }
  348. case ($a < 2)/* test */: {
  349. echo "fix 1";
  350. break;
  351. }
  352. case (3) : {
  353. echo "fix 2";
  354. break;
  355. }
  356. case /**/(/**/ // test
  357. 4
  358. /**/)//
  359. /**/: {
  360. echo "fix 3";
  361. break;
  362. }
  363. case (((int)$b) + 4.1): {
  364. echo "fix 4";
  365. break;
  366. }
  367. case ($b + 1) * 2: {
  368. echo "leave alone";
  369. break;
  370. }
  371. }
  372. ',
  373. ),
  374. );
  375. }
  376. public static function tearDownAfterClass()
  377. {
  378. UnneededControlParenthesesFixer::configure(self::$defaultStatements);
  379. }
  380. }