WhitespacyCommentTransformerTest.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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\Tokenizer\Transformer;
  13. use PhpCsFixer\Tests\Test\AbstractTransformerTestCase;
  14. use PhpCsFixer\Tokenizer\Tokens;
  15. /**
  16. * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
  17. *
  18. * @internal
  19. *
  20. * @covers \PhpCsFixer\Tokenizer\Transformer\WhitespacyCommentTransformer
  21. */
  22. final class WhitespacyCommentTransformerTest extends AbstractTransformerTestCase
  23. {
  24. /**
  25. * @param array<int, array{int, string}> $expectedTokens
  26. *
  27. * @dataProvider provideProcessCases
  28. */
  29. public function testProcess(string $source, array $expectedTokens): void
  30. {
  31. $tokens = Tokens::fromCode($source);
  32. foreach ($expectedTokens as $index => $expectedToken) {
  33. $token = $tokens[$index];
  34. self::assertSame($expectedToken[1], $token->getContent());
  35. self::assertSame($expectedToken[0], $token->getId());
  36. }
  37. }
  38. public static function provideProcessCases(): iterable
  39. {
  40. yield [
  41. "<?php // foo\n \$a = 1;",
  42. [
  43. 1 => [T_COMMENT, '// foo'],
  44. 2 => [T_WHITESPACE, "\n "],
  45. ],
  46. ];
  47. yield [
  48. "<?php // foo\n\n ",
  49. [
  50. 1 => [T_COMMENT, '// foo'],
  51. 2 => [T_WHITESPACE, "\n\n "],
  52. ],
  53. ];
  54. yield [
  55. "<?php // foo \r\n ",
  56. [
  57. 1 => [T_COMMENT, '// foo'],
  58. 2 => [T_WHITESPACE, " \r\n "],
  59. ],
  60. ];
  61. yield [
  62. '<?php /* foo1 */// foo2 ',
  63. [
  64. 1 => [T_COMMENT, '/* foo1 */'],
  65. 2 => [T_COMMENT, '// foo2'],
  66. ],
  67. ];
  68. }
  69. }