CompactNullableTypehintFixerTest.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <?php
  2. /*
  3. * This file is part of PHP CS Fixer.
  4. *
  5. * (c) Fabien Potencier <fabien@symfony.com>
  6. * Dariusz Rumiński <dariusz.ruminski@gmail.com>
  7. *
  8. * This source file is subject to the MIT license that is bundled
  9. * with this source code in the file LICENSE.
  10. */
  11. namespace PhpCsFixer\Tests\Fixer\Whitespace;
  12. use PhpCsFixer\Tests\Test\AbstractFixerTestCase;
  13. /**
  14. * @requires PHP 7.1
  15. *
  16. * @author Jack Cherng <jfcherng@gmail.com>
  17. *
  18. * @internal
  19. *
  20. * @covers \PhpCsFixer\Fixer\Whitespace\CompactNullableTypehintFixer
  21. */
  22. final class CompactNullableTypehintFixerTest extends AbstractFixerTestCase
  23. {
  24. /**
  25. * @param string $expected
  26. * @param null|string $input
  27. *
  28. * @dataProvider provideFix71Cases
  29. */
  30. public function testFix71($expected, $input = null)
  31. {
  32. $this->doTest($expected, $input);
  33. }
  34. public function provideFix71Cases()
  35. {
  36. return [
  37. [
  38. '<?php function foo(?int $param): ?int {}',
  39. ],
  40. [
  41. '<?php function foo(? /* foo */ int $param): ? /* foo */ int {}',
  42. ],
  43. [
  44. '<?php function foo(? /** foo */ int $param): ? /** foo */ int {}',
  45. ],
  46. [
  47. '<?php function foo(? // foo
  48. int $param): ? // foo
  49. int {}',
  50. ],
  51. [
  52. '<?php function foo(/**? int*/$param): ?int {}',
  53. '<?php function foo(/**? int*/$param): ? int {}',
  54. ],
  55. [
  56. '<?php function foo(?callable $param): ?callable {}',
  57. '<?php function foo(? callable $param): ? callable {}',
  58. ],
  59. [
  60. '<?php function foo(?array &$param): ?array {}',
  61. '<?php function foo(? array &$param): ? array {}',
  62. ],
  63. [
  64. '<?php function foo(?Bar $param): ?Bar {}',
  65. '<?php function foo(? Bar $param): ? Bar {}',
  66. ],
  67. [
  68. '<?php function foo(?\Bar $param): ?\Bar {}',
  69. '<?php function foo(? \Bar $param): ? \Bar {}',
  70. ],
  71. [
  72. '<?php function foo(?Bar\Baz $param): ?Bar\Baz {}',
  73. '<?php function foo(? Bar\Baz $param): ? Bar\Baz {}',
  74. ],
  75. [
  76. '<?php function foo(?Bar\Baz &$param): ?Bar\Baz {}',
  77. '<?php function foo(? Bar\Baz &$param): ? Bar\Baz {}',
  78. ],
  79. [
  80. '<?php $foo = function(?Bar\Baz $param): ?Bar\Baz {};',
  81. '<?php $foo = function(? Bar\Baz $param): ? Bar\Baz {};',
  82. ],
  83. [
  84. '<?php $foo = function(?Bar\Baz &$param): ?Bar\Baz {};',
  85. '<?php $foo = function(? Bar\Baz &$param): ? Bar\Baz {};',
  86. ],
  87. [
  88. '<?php class Test { public function foo(?Bar\Baz $param): ?Bar\Baz {} }',
  89. '<?php class Test { public function foo(? Bar\Baz $param): ? Bar\Baz {} }',
  90. ],
  91. [
  92. '<?php abstract class Test { abstract public function foo(?Bar\Baz $param); }',
  93. '<?php abstract class Test { abstract public function foo(? Bar\Baz $param); }',
  94. ],
  95. [
  96. '<?php $foo = function(?array $a,
  97. ?array $b): ?Bar\Baz {};',
  98. '<?php $foo = function(?
  99. array $a,
  100. ? array $b): ?
  101. Bar\Baz {};',
  102. ],
  103. [
  104. '<?php function foo(?array ...$param): ?array {}',
  105. '<?php function foo(? array ...$param): ? array {}',
  106. ],
  107. ];
  108. }
  109. }