DateTimeImmutableFixerTest.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  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\ClassUsage;
  13. use PhpCsFixer\Tests\Test\AbstractFixerTestCase;
  14. /**
  15. * @author Kuba Werłos <werlos@gmail.com>
  16. *
  17. * @internal
  18. *
  19. * @covers \PhpCsFixer\Fixer\ClassUsage\DateTimeImmutableFixer
  20. */
  21. final class DateTimeImmutableFixerTest 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 [
  33. '<?php new DateTimeImmutable();',
  34. '<?php new DateTime();',
  35. ];
  36. yield [
  37. '<?php new DateTimeImmutable();',
  38. '<?php new DATETIME();',
  39. ];
  40. yield [
  41. '<?php new \DateTimeImmutable();',
  42. '<?php new \DateTime();',
  43. ];
  44. yield [
  45. '<?php new Foo\DateTime();',
  46. ];
  47. yield [
  48. '<?php namespace Foo; new DateTime();',
  49. ];
  50. yield [
  51. '<?php namespace Foo; new \DateTimeImmutable();',
  52. '<?php namespace Foo; new \DateTime();',
  53. ];
  54. yield [
  55. '<?php namespace Foo; use DateTime; new \DateTimeImmutable();',
  56. '<?php namespace Foo; use DateTime; new DateTime();',
  57. ];
  58. yield [
  59. '<?php namespace Foo; use DateTime; new Bar\DateTime();',
  60. ];
  61. yield [
  62. '<?php namespace Foo; use DateTime\Bar; new DateTime();',
  63. ];
  64. yield [
  65. '<?php namespace Foo; use Bar\DateTime; new DateTime();',
  66. ];
  67. yield [
  68. '<?php namespace Foo; use DateTime\Bar; use DateTime; use Baz\DateTime as BazDateTime; new \DateTimeImmutable();',
  69. '<?php namespace Foo; use DateTime\Bar; use DateTime; use Baz\DateTime as BazDateTime; new DateTime();',
  70. ];
  71. yield [
  72. '<?php $foo = DateTime::ISO8601;',
  73. ];
  74. yield [
  75. '<?php $foo = \datetime::ISO8601 + 24;',
  76. ];
  77. yield [
  78. "<?php DateTimeImmutable::createFromFormat('j-M-Y', '15-Feb-2009');",
  79. "<?php DateTime::createFromFormat('j-M-Y', '15-Feb-2009');",
  80. ];
  81. yield [
  82. '<?php \DateTimeImmutable::getLastErrors();',
  83. '<?php \DateTime::getLastErrors();',
  84. ];
  85. yield [
  86. '<?php Foo\DateTime::createFromFormat();',
  87. ];
  88. yield [
  89. '<?php $foo->DateTime();',
  90. ];
  91. yield [
  92. '<?php Foo::DateTime();',
  93. ];
  94. yield [
  95. '<?php Foo\DateTime();',
  96. ];
  97. yield [
  98. '<?php date_create_immutable("now");',
  99. '<?php date_create("now");',
  100. ];
  101. yield [
  102. '<?php date_create_immutable();',
  103. '<?php Date_Create();',
  104. ];
  105. yield [
  106. '<?php \date_create_immutable();',
  107. '<?php \date_create();',
  108. ];
  109. yield [
  110. '<?php namespace Foo; date_create_immutable();',
  111. '<?php namespace Foo; date_create();',
  112. ];
  113. yield [
  114. '<?php namespace Foo; \date_create_immutable();',
  115. '<?php namespace Foo; \date_create();',
  116. ];
  117. yield [
  118. "<?php date_create_immutable_from_format('j-M-Y', '15-Feb-2009');",
  119. "<?php date_create_from_format('j-M-Y', '15-Feb-2009');",
  120. ];
  121. yield [
  122. '<?php Foo\date_create();',
  123. ];
  124. yield [
  125. '<?php $foo->date_create();',
  126. ];
  127. yield [
  128. '<?php Foo::date_create();',
  129. ];
  130. yield [
  131. '<?php new date_create();',
  132. ];
  133. yield [
  134. '<?php new \date_create();',
  135. ];
  136. yield [
  137. '<?php new Foo\date_create();',
  138. ];
  139. yield [
  140. '<?php class Foo { public function datetime() {} }',
  141. ];
  142. yield [
  143. '<?php class Foo { public function date_create() {} }',
  144. ];
  145. yield [
  146. '<?php namespace Foo; use DateTime; class Bar { public function datetime() {} }',
  147. ];
  148. yield [
  149. '<?php
  150. namespace Foo;
  151. use DateTime\Bar;
  152. use DateTime;
  153. use Baz\DateTime as BazDateTime;
  154. new \DateTimeImmutable();
  155. new \DateTimeImmutable();
  156. new \DateTimeImmutable();
  157. new \DateTimeImmutable();
  158. ',
  159. '<?php
  160. namespace Foo;
  161. use DateTime\Bar;
  162. use DateTime;
  163. use Baz\DateTime as BazDateTime;
  164. new DateTime();
  165. new DateTime();
  166. new DateTime();
  167. new DateTime();
  168. ',
  169. ];
  170. }
  171. /**
  172. * @dataProvider provideFix80Cases
  173. *
  174. * @requires PHP 8.0
  175. */
  176. public function testFix80(string $expected): void
  177. {
  178. $this->doTest($expected);
  179. }
  180. public static function provideFix80Cases(): iterable
  181. {
  182. yield ['<?php $foo?->DateTime();'];
  183. yield ['<?php $foo?->date_create();'];
  184. }
  185. }