StrictParamFixerTest.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  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\Strict;
  12. use PhpCsFixer\Tests\Test\AbstractFixerTestCase;
  13. /**
  14. * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
  15. *
  16. * @internal
  17. *
  18. * @covers \PhpCsFixer\Fixer\Strict\StrictParamFixer
  19. */
  20. final class StrictParamFixerTest 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. in_array(1, $a, true);
  38. in_array(1, $a, false);
  39. in_array(1, $a, $useStrict);',
  40. ],
  41. [
  42. '<?php
  43. in_array(1, $a, true);',
  44. '<?php
  45. in_array(1, $a);',
  46. ],
  47. [
  48. '<?php
  49. in_array(1, foo(), true);',
  50. '<?php
  51. in_array(1, foo());',
  52. ],
  53. [
  54. '<?php
  55. in_array(1, array(1, 2, 3), true);',
  56. '<?php
  57. in_array(1, array(1, 2, 3));',
  58. ],
  59. [
  60. '<?php
  61. in_array(1, [1, 2, 3], true);',
  62. '<?php
  63. in_array(1, [1, 2, 3]);',
  64. ],
  65. [
  66. '<?php
  67. in_array(in_array(1, [1, in_array(1, [1, 2, 3], true) ? 21 : 22, 3], true) ? 111 : 222, [1, in_array(1, [1, 2, 3], true) ? 21 : 22, 3], true);',
  68. '<?php
  69. in_array(in_array(1, [1, in_array(1, [1, 2, 3]) ? 21 : 22, 3]) ? 111 : 222, [1, in_array(1, [1, 2, 3]) ? 21 : 22, 3]);',
  70. ],
  71. [
  72. '<?php
  73. in_Array(1, $a, true);',
  74. '<?php
  75. in_Array(1, $a);',
  76. ],
  77. [
  78. '<?php
  79. base64_decode($foo, true);
  80. base64_decode($foo, false);
  81. base64_decode($foo, $useStrict);',
  82. ],
  83. [
  84. '<?php
  85. base64_decode($foo, true);',
  86. '<?php
  87. base64_decode($foo);',
  88. ],
  89. [
  90. '<?php
  91. array_search($foo, $bar, true);
  92. array_search($foo, $bar, false);
  93. array_search($foo, $bar, $useStrict);',
  94. ],
  95. [
  96. '<?php
  97. array_search($foo, $bar, true);',
  98. '<?php
  99. array_search($foo, $bar);',
  100. ],
  101. [
  102. '<?php
  103. array_keys($foo);
  104. array_keys($foo, $bar, true);
  105. array_keys($foo, $bar, false);
  106. array_keys($foo, $bar, $useStrict);',
  107. ],
  108. [
  109. '<?php
  110. array_keys($foo, $bar, true);',
  111. '<?php
  112. array_keys($foo, $bar);',
  113. ],
  114. [
  115. '<?php
  116. mb_detect_encoding($foo, $bar, true);
  117. mb_detect_encoding($foo, $bar, false);
  118. mb_detect_encoding($foo, $bar, $useStrict);',
  119. ],
  120. [
  121. '<?php
  122. mb_detect_encoding($foo, mb_detect_order(), true);',
  123. '<?php
  124. mb_detect_encoding($foo);',
  125. ],
  126. [
  127. '<?php
  128. use function in_array;
  129. class Foo
  130. {
  131. public function __construct($foo, $bar) {}
  132. }',
  133. ],
  134. [
  135. '<?php
  136. namespace Foo {
  137. array_keys($foo, $bar, true);
  138. }
  139. namespace Bar {
  140. use function Foo\LoremIpsum;
  141. array_keys($foo, $bar, true);
  142. }',
  143. '<?php
  144. namespace Foo {
  145. array_keys($foo, $bar);
  146. }
  147. namespace Bar {
  148. use function Foo\LoremIpsum;
  149. array_keys($foo, $bar);
  150. }',
  151. ],
  152. [
  153. '<?php
  154. use function \base64_decode;
  155. foo($bar);',
  156. ],
  157. [
  158. '<?php
  159. use function Baz\base64_decode;
  160. foo($bar);',
  161. ],
  162. [
  163. '<?php
  164. in_array(1, foo(), true /* 1 *//* 2 *//* 3 */);',
  165. '<?php
  166. in_array(1, foo() /* 1 *//* 2 *//* 3 */);',
  167. ],
  168. ];
  169. }
  170. /**
  171. * @param string $expected
  172. * @param null|string $input
  173. *
  174. * @requires PHP 7.3
  175. * @dataProvider provideFix73Cases
  176. */
  177. public function testFix73($expected, $input = null)
  178. {
  179. $this->doTest($expected, $input);
  180. }
  181. public function provideFix73Cases()
  182. {
  183. yield [
  184. '<?php in_array($b, $c, true, );',
  185. '<?php in_array($b, $c, );',
  186. ];
  187. yield [
  188. '<?php in_array($b, $c/* 0 *//* 1 */, true,/* 2 *//* 3 */);',
  189. '<?php in_array($b, $c/* 0 *//* 1 */,/* 2 *//* 3 */);',
  190. ];
  191. }
  192. }