123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 |
- <?php
- /*
- * This file is part of PHP CS Fixer.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- * Dariusz Rumiński <dariusz.ruminski@gmail.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
- namespace PhpCsFixer\Tests\Tokenizer\Transformer;
- use PhpCsFixer\Tests\Test\AbstractTransformerTestCase;
- use PhpCsFixer\Tokenizer\CT;
- /**
- * @author Sebastiaans Stok <s.stok@rollerscapes.net>
- *
- * @internal
- *
- * @covers \PhpCsFixer\Tokenizer\Transformer\BraceClassInstantiationTransformer
- */
- final class BraceClassInstantiationTransformerTest extends AbstractTransformerTestCase
- {
- /**
- * @param string $source
- *
- * @dataProvider provideProcessCases
- */
- public function testProcess($source, array $expectedTokens, array $observedKinds = array())
- {
- $this->doTest(
- $source,
- $expectedTokens,
- $observedKinds
- );
- }
- public function provideProcessCases()
- {
- return array(
- array(
- '<?php echo (new Process())->getOutput();',
- array(
- 3 => CT::T_BRACE_CLASS_INSTANTIATION_OPEN,
- 9 => CT::T_BRACE_CLASS_INSTANTIATION_CLOSE,
- ),
- array(
- CT::T_BRACE_CLASS_INSTANTIATION_OPEN,
- CT::T_BRACE_CLASS_INSTANTIATION_CLOSE,
- ),
- ),
- array(
- '<?php echo (new Process())::getOutput();',
- array(
- 3 => CT::T_BRACE_CLASS_INSTANTIATION_OPEN,
- 9 => CT::T_BRACE_CLASS_INSTANTIATION_CLOSE,
- ),
- array(
- CT::T_BRACE_CLASS_INSTANTIATION_OPEN,
- CT::T_BRACE_CLASS_INSTANTIATION_CLOSE,
- ),
- ),
- array(
- '<?php return foo()->bar(new Foo())->bar();',
- array(
- 4 => '(',
- 5 => ')',
- 8 => '(',
- 12 => '(',
- 13 => ')',
- 14 => ')',
- 17 => '(',
- 18 => ')',
- ),
- array(
- '(',
- ')',
- CT::T_BRACE_CLASS_INSTANTIATION_OPEN,
- CT::T_BRACE_CLASS_INSTANTIATION_CLOSE,
- ),
- ),
- array(
- '<?php $foo[0](new Foo())->bar();',
- array(
- 5 => '(',
- 9 => '(',
- 10 => ')',
- 11 => ')',
- 14 => '(',
- 15 => ')',
- ),
- array(
- '(',
- ')',
- CT::T_BRACE_CLASS_INSTANTIATION_OPEN,
- CT::T_BRACE_CLASS_INSTANTIATION_CLOSE,
- ),
- ),
- array(
- '<?php $foo{0}(new Foo())->bar();',
- array(
- 5 => '(',
- 9 => '(',
- 10 => ')',
- 11 => ')',
- 14 => '(',
- 15 => ')',
- ),
- array(
- '(',
- ')',
- CT::T_BRACE_CLASS_INSTANTIATION_OPEN,
- CT::T_BRACE_CLASS_INSTANTIATION_CLOSE,
- ),
- ),
- array(
- '<?php $foo(new Foo())->bar();',
- array(
- 2 => '(',
- 6 => '(',
- 7 => ')',
- 8 => ')',
- 11 => '(',
- 12 => ')',
- ),
- array(
- '(',
- ')',
- CT::T_BRACE_CLASS_INSTANTIATION_OPEN,
- CT::T_BRACE_CLASS_INSTANTIATION_CLOSE,
- ),
- ),
- array(
- '<?php $$foo(new Foo())->bar();',
- array(
- 3 => '(',
- 7 => '(',
- 8 => ')',
- 9 => ')',
- 12 => '(',
- 13 => ')',
- ),
- array(
- '(',
- ')',
- CT::T_BRACE_CLASS_INSTANTIATION_OPEN,
- CT::T_BRACE_CLASS_INSTANTIATION_CLOSE,
- ),
- ),
- array(
- '<?php if ($foo){}(new Foo)->foo();',
- array(
- 8 => CT::T_BRACE_CLASS_INSTANTIATION_OPEN,
- 12 => CT::T_BRACE_CLASS_INSTANTIATION_CLOSE,
- ),
- array(
- CT::T_BRACE_CLASS_INSTANTIATION_OPEN,
- CT::T_BRACE_CLASS_INSTANTIATION_CLOSE,
- ),
- ),
- array(
- '<?php echo (((new \stdClass()))->a);',
- array(
- 5 => CT::T_BRACE_CLASS_INSTANTIATION_OPEN,
- 12 => CT::T_BRACE_CLASS_INSTANTIATION_CLOSE,
- ),
- array(
- CT::T_BRACE_CLASS_INSTANTIATION_OPEN,
- CT::T_BRACE_CLASS_INSTANTIATION_CLOSE,
- ),
- ),
- array(
- '<?php $foo = array(new Foo());',
- array(
- 6 => '(',
- 10 => '(',
- 11 => ')',
- 12 => ')',
- ),
- array(
- '(',
- ')',
- CT::T_BRACE_CLASS_INSTANTIATION_OPEN,
- CT::T_BRACE_CLASS_INSTANTIATION_CLOSE,
- ),
- ),
- );
- }
- /**
- * @param string $source
- *
- * @dataProvider provideProcessPhp70Cases
- */
- public function testProcessPhp70($source, array $expectedTokens, array $observedKinds = array())
- {
- $this->doTest(
- $source,
- $expectedTokens,
- $observedKinds
- );
- }
- public function provideProcessPhp70Cases()
- {
- return array(
- array(
- '<?php $foo = new class(new \stdClass()) {};',
- array(
- 8 => '(',
- 13 => '(',
- 14 => ')',
- 15 => ')',
- ),
- array(
- '(',
- ')',
- CT::T_BRACE_CLASS_INSTANTIATION_OPEN,
- CT::T_BRACE_CLASS_INSTANTIATION_CLOSE,
- ),
- ),
- array(
- '<?php $foo = (new class(new \stdClass()) {});',
- array(
- 5 => CT::T_BRACE_CLASS_INSTANTIATION_OPEN,
- 20 => CT::T_BRACE_CLASS_INSTANTIATION_CLOSE,
- ),
- array(
- CT::T_BRACE_CLASS_INSTANTIATION_OPEN,
- CT::T_BRACE_CLASS_INSTANTIATION_CLOSE,
- ),
- ),
- );
- }
- }
|