StrictParamFixerTest.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. <?php
  2. declare(strict_types=1);
  3. /*
  4. * This file is part of PHP CS Fixer.
  5. *
  6. * (c) Fabien Potencier <fabien@symfony.com>
  7. * Dariusz Rumiński <dariusz.ruminski@gmail.com>
  8. *
  9. * This source file is subject to the MIT license that is bundled
  10. * with this source code in the file LICENSE.
  11. */
  12. namespace PhpCsFixer\Tests\Fixer\Strict;
  13. use PhpCsFixer\Tests\Test\AbstractFixerTestCase;
  14. /**
  15. * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
  16. *
  17. * @internal
  18. *
  19. * @covers \PhpCsFixer\Fixer\Strict\StrictParamFixer
  20. */
  21. final class StrictParamFixerTest extends AbstractFixerTestCase
  22. {
  23. /**
  24. * @dataProvider provideFixCases
  25. */
  26. public function testFix(string $expected, ?string $input = null): void
  27. {
  28. $this->doTest($expected, $input);
  29. }
  30. public static function provideFixCases(): iterable
  31. {
  32. return [
  33. [
  34. '<?php
  35. in_array(1, $a, true);
  36. in_array(1, $a, false);
  37. in_array(1, $a, $useStrict);',
  38. ],
  39. [
  40. '<?php class Foo
  41. {
  42. public function in_array($needle, $haystack) {}
  43. }',
  44. ],
  45. [
  46. '<?php
  47. in_array(1, $a, true);',
  48. '<?php
  49. in_array(1, $a);',
  50. ],
  51. [
  52. '<?php
  53. in_array(1, foo(), true);',
  54. '<?php
  55. in_array(1, foo());',
  56. ],
  57. [
  58. '<?php
  59. in_array(1, array(1, 2, 3), true);',
  60. '<?php
  61. in_array(1, array(1, 2, 3));',
  62. ],
  63. [
  64. '<?php
  65. in_array(1, [1, 2, 3], true);',
  66. '<?php
  67. in_array(1, [1, 2, 3]);',
  68. ],
  69. [
  70. '<?php
  71. 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);',
  72. '<?php
  73. 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]);',
  74. ],
  75. [
  76. '<?php
  77. in_Array(1, $a, true);',
  78. '<?php
  79. in_Array(1, $a);',
  80. ],
  81. [
  82. '<?php
  83. base64_decode($foo, true);
  84. base64_decode($foo, false);
  85. base64_decode($foo, $useStrict);',
  86. ],
  87. [
  88. '<?php
  89. base64_decode($foo, true);',
  90. '<?php
  91. base64_decode($foo);',
  92. ],
  93. [
  94. '<?php
  95. array_search($foo, $bar, true);
  96. array_search($foo, $bar, false);
  97. array_search($foo, $bar, $useStrict);',
  98. ],
  99. [
  100. '<?php
  101. array_search($foo, $bar, true);',
  102. '<?php
  103. array_search($foo, $bar);',
  104. ],
  105. [
  106. '<?php
  107. array_keys($foo);
  108. array_keys($foo, $bar, true);
  109. array_keys($foo, $bar, false);
  110. array_keys($foo, $bar, $useStrict);',
  111. ],
  112. [
  113. '<?php
  114. array_keys($foo, $bar, true);',
  115. '<?php
  116. array_keys($foo, $bar);',
  117. ],
  118. [
  119. '<?php
  120. mb_detect_encoding($foo, $bar, true);
  121. mb_detect_encoding($foo, $bar, false);
  122. mb_detect_encoding($foo, $bar, $useStrict);',
  123. ],
  124. [
  125. '<?php
  126. mb_detect_encoding($foo, mb_detect_order(), true);',
  127. '<?php
  128. mb_detect_encoding($foo);',
  129. ],
  130. [
  131. '<?php
  132. use function in_array;
  133. class Foo
  134. {
  135. public function __construct($foo, $bar) {}
  136. }',
  137. ],
  138. [
  139. '<?php
  140. namespace Foo {
  141. array_keys($foo, $bar, true);
  142. }
  143. namespace Bar {
  144. use function Foo\LoremIpsum;
  145. array_keys($foo, $bar, true);
  146. }',
  147. '<?php
  148. namespace Foo {
  149. array_keys($foo, $bar);
  150. }
  151. namespace Bar {
  152. use function Foo\LoremIpsum;
  153. array_keys($foo, $bar);
  154. }',
  155. ],
  156. [
  157. '<?php
  158. use function \base64_decode;
  159. foo($bar);',
  160. ],
  161. [
  162. '<?php
  163. use function Baz\base64_decode;
  164. foo($bar);',
  165. ],
  166. [
  167. '<?php
  168. in_array(1, foo(), true /* 1 *//* 2 *//* 3 */);',
  169. '<?php
  170. in_array(1, foo() /* 1 *//* 2 *//* 3 */);',
  171. ],
  172. [
  173. '<?php in_array($b, $c, true, );',
  174. '<?php in_array($b, $c, );',
  175. ],
  176. [
  177. '<?php in_array($b, $c/* 0 *//* 1 */, true,/* 2 *//* 3 */);',
  178. '<?php in_array($b, $c/* 0 *//* 1 */,/* 2 *//* 3 */);',
  179. ],
  180. ];
  181. }
  182. }