EregToPregFixerTest.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  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\Alias;
  13. use PhpCsFixer\Tests\Test\AbstractFixerTestCase;
  14. /**
  15. * @author Matteo Beccati <matteo@beccati.com>
  16. *
  17. * @internal
  18. *
  19. * @covers \PhpCsFixer\Fixer\Alias\EregToPregFixer
  20. */
  21. final class EregToPregFixerTest 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. yield ['<?php $x = 1;'];
  33. yield ['<?php $x = "ereg";'];
  34. yield ['<?php $x = ereg("[A-Z]"."foo", $m);'];
  35. yield ['<?php $x = ereg("^*broken", $m);'];
  36. yield ['<?php $x = Foo::split("[A-Z]", $m);'];
  37. yield ['<?php $x = $foo->split("[A-Z]", $m);'];
  38. yield ['<?php $x = Foo\split("[A-Z]", $m);'];
  39. yield [
  40. '<?php $x = preg_match(\'/[A-Z]/D\');',
  41. '<?php $x = ereg(\'[A-Z]\');',
  42. ];
  43. yield [
  44. '<?php $x = preg_match(\'/[A-Z]/D\', $m);',
  45. '<?php $x = ereg(\'[A-Z]\', $m);',
  46. ];
  47. yield [
  48. '<?php $x = preg_match("/[A-Z]/D", $m);',
  49. '<?php $x = ereg("[A-Z]", $m);',
  50. ];
  51. yield [
  52. '<?php $x = preg_match("/[A-Z]/Di", $m);',
  53. '<?php $x = eregi("[A-Z]", $m);',
  54. ];
  55. yield [
  56. '<?php $x = preg_match("#/[AZ]#D", $m);',
  57. '<?php $x = ereg("/[AZ]", $m);',
  58. ];
  59. yield [
  60. '<?php $x = preg_match("#[AZ]/#D", $m);',
  61. '<?php $x = ereg("[AZ]/", $m);',
  62. ];
  63. yield [
  64. '<?php $x = preg_match("!#[A]/!D", $m);',
  65. '<?php $x = ereg("#[A]/", $m);',
  66. ];
  67. yield [
  68. '<?php $x = preg_match("!##[A\!]//!D", $m);',
  69. '<?php $x = ereg("##[A!]//", $m);',
  70. ];
  71. yield [
  72. '<?php $x = preg_match("/##[A!!]\/\//D", $m);',
  73. '<?php $x = ereg("##[A!!]//", $m);',
  74. ];
  75. yield [
  76. '<?php $x = preg_match("#\#\#[A!!]///#D", $m);',
  77. '<?php $x = ereg("##[A!!]///", $m);',
  78. ];
  79. yield [
  80. '<?php $x = preg_replace("/[A-Z]/D", "", $m);',
  81. '<?php $x = ereg_replace("[A-Z]", "", $m);',
  82. ];
  83. yield [
  84. '<?php $x = preg_replace("/[A-Z]/Di", "", $m);',
  85. '<?php $x = eregi_replace("[A-Z]", "", $m);',
  86. ];
  87. yield [
  88. '<?php $x = preg_split("/[A-Z]/D", $m);',
  89. '<?php $x = split("[A-Z]", $m);',
  90. ];
  91. yield [
  92. '<?php $x = preg_split("/[A-Z]/Di", $m);',
  93. '<?php $x = spliti("[A-Z]", $m);',
  94. ];
  95. yield 'binary lowercase' => [
  96. '<?php $x = preg_split(b"/[A-Z]/Di", $m);',
  97. '<?php $x = spliti(b"[A-Z]", $m);',
  98. ];
  99. yield 'binary uppercase' => [
  100. '<?php $x = preg_split(b"/[A-Z]/Di", $m);',
  101. '<?php $x = spliti(b"[A-Z]", $m);',
  102. ];
  103. }
  104. /**
  105. * @dataProvider provideFix81Cases
  106. *
  107. * @requires PHP 8.1
  108. */
  109. public function testFix81(string $expected, ?string $input = null): void
  110. {
  111. $this->doTest($expected, $input);
  112. }
  113. public static function provideFix81Cases(): iterable
  114. {
  115. yield [
  116. '<?php $x = spliti(...);',
  117. ];
  118. }
  119. }