NoSpaceAroundDoubleColonFixerTest.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  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\Operator;
  13. use PhpCsFixer\Tests\Test\AbstractFixerTestCase;
  14. /**
  15. * @covers \PhpCsFixer\Fixer\Operator\NoSpaceAroundDoubleColonFixer
  16. *
  17. * @internal
  18. */
  19. final class NoSpaceAroundDoubleColonFixerTest extends AbstractFixerTestCase
  20. {
  21. /**
  22. * @dataProvider provideFixCases
  23. */
  24. public function testFix(string $expected, string $input): void
  25. {
  26. $this->doTest($expected, $input);
  27. }
  28. public static function provideFixCases(): iterable
  29. {
  30. yield [
  31. '<?php echo self::$a;',
  32. '<?php echo self :: $a;',
  33. ];
  34. yield [
  35. '<?php echo static::$a;',
  36. '<?php echo static ::$a;',
  37. ];
  38. yield [
  39. '<?php
  40. echo F\B::class;
  41. echo A\B:: /**/ c;
  42. echo C\B/**/::c;
  43. ',
  44. '<?php
  45. echo F\B:: class;
  46. echo A\B :: /**/ c;
  47. echo C\B/**/:: c;
  48. ',
  49. ];
  50. yield [
  51. '<?php
  52. namespace {
  53. class Foo { public const a = 1; }
  54. echo Foo::a; // Fix
  55. echo "\n".Place\Bar::$a."\n"; // Fix
  56. }
  57. namespace Somewhere\Over\The\Rainbow {
  58. class Bar {
  59. public static $a = "BAR-A:: ";
  60. public function v(?string $z = "zzz"): void
  61. {
  62. echo "\n".self::$a.$z; // Fix
  63. echo "\n".static::class; // Fix
  64. echo "\n".static # do ...
  65. :: # ... not ...
  66. $a.$z; // ... fix
  67. }
  68. }
  69. $bar = new Bar();
  70. $bar->v();
  71. }
  72. # ; echo A :: B;
  73. // ; echo A :: B;
  74. /* ; echo A :: B; */
  75. ',
  76. '<?php
  77. namespace {
  78. class Foo { public const a = 1; }
  79. echo Foo:: a; // Fix
  80. echo "\n".Place\Bar :: $a."\n"; // Fix
  81. }
  82. namespace Somewhere\Over\The\Rainbow {
  83. class Bar {
  84. public static $a = "BAR-A:: ";
  85. public function v(?string $z = "zzz"): void
  86. {
  87. echo "\n".self :: $a.$z; // Fix
  88. echo "\n".static :: class; // Fix
  89. echo "\n".static # do ...
  90. :: # ... not ...
  91. $a.$z; // ... fix
  92. }
  93. }
  94. $bar = new Bar();
  95. $bar->v();
  96. }
  97. # ; echo A :: B;
  98. // ; echo A :: B;
  99. /* ; echo A :: B; */
  100. ',
  101. ];
  102. }
  103. }