-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
/
ArraySyntaxFixerTest.php
115 lines (104 loc) · 4.9 KB
/
ArraySyntaxFixerTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<?php
declare(strict_types=1);
/*
* 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\Fixer\ArrayNotation;
use PhpCsFixer\ConfigurationException\InvalidFixerConfigurationException;
use PhpCsFixer\Tests\Test\AbstractFixerTestCase;
/**
* @author Sebastiaan Stok <s.stok@rollerscapes.net>
* @author Gregor Harlan <gharlan@web.de>
*
* @internal
*
* @covers \PhpCsFixer\Fixer\ArrayNotation\ArraySyntaxFixer
*/
final class ArraySyntaxFixerTest extends AbstractFixerTestCase
{
public function testInvalidConfiguration(): void
{
$this->expectException(InvalidFixerConfigurationException::class);
$this->expectExceptionMessageMatches('#^\[array_syntax\] Invalid configuration: The option "a" does not exist\. Defined options are: "syntax"\.$#');
$this->fixer->configure(['a' => 1]);
}
public function testFixWithDefaultConfiguration(): void
{
$this->fixer->configure([]);
$this->doTest(
'<?php $a = []; $b = [];',
'<?php $a = []; $b = array();'
);
}
/**
* @dataProvider provideLongSyntaxCases
*/
public function testFixLongSyntax(string $expected, ?string $input = null): void
{
$this->fixer->configure(['syntax' => 'long']);
$this->doTest($expected, $input);
}
public function provideLongSyntaxCases(): array
{
return [
['<?php $x = array();', '<?php $x = [];'],
['<?php $x = array(); $y = array();', '<?php $x = []; $y = [];'],
['<?php $x = array( );', '<?php $x = [ ];'],
['<?php $x = array(\'foo\');', '<?php $x = [\'foo\'];'],
['<?php $x = array( \'foo\' );', '<?php $x = [ \'foo\' ];'],
['<?php $x = array(($y ? true : false));', '<?php $x = [($y ? true : false)];'],
['<?php $x = array(($y ? array(true) : array(false)));', '<?php $x = [($y ? [true] : [false])];'],
['<?php $x = array(($y ? array(true) : array( false )));', '<?php $x = [($y ? [true] : [ false ])];'],
['<?php $x = array(($y ? array("t" => true) : array("f" => false)));', '<?php $x = [($y ? ["t" => true] : ["f" => false])];'],
['<?php print_r(array(($y ? true : false)));', '<?php print_r([($y ? true : false)]);'],
['<?php $x = array(array(array()));', '<?php $x = [[[]]];'],
['<?php $x = array(array(array())); $y = array(array(array()));', '<?php $x = [[[]]]; $y = [[[]]];'],
['<?php function(array $foo = array()) {};', '<?php function(array $foo = []) {};'],
['<?php $x = array(1, 2)[0];', '<?php $x = [1, 2][0];'],
['<?php $x[] = 1;'],
['<?php $x[ ] = 1;'],
['<?php $x[2] = 1;'],
['<?php $x["a"] = 1;'],
['<?php $x = func()[$x];'],
['<?php $x = "foo"[$x];'],
['<?php $text = "foo ${aaa[123]} bar $bbb[0] baz";'],
['<?php foreach ($array as [$x, $y]) {}'],
['<?php foreach ($array as $key => [$x, $y]) {}'],
];
}
/**
* @dataProvider provideShortSyntaxCases
*/
public function testFixShortSyntax(string $expected, ?string $input = null): void
{
$this->fixer->configure(['syntax' => 'short']);
$this->doTest($expected, $input);
}
public function provideShortSyntaxCases(): array
{
return [
['<?php $x = [];', '<?php $x = array();'],
['<?php $x = []; $y = [];', '<?php $x = array(); $y = array();'],
['<?php $x = [ ];', '<?php $x = array( );'],
['<?php $x = [\'foo\'];', '<?php $x = array(\'foo\');'],
['<?php $x = [ \'foo\' ];', '<?php $x = array( \'foo\' );'],
['<?php $x = [($y ? true : false)];', '<?php $x = array(($y ? true : false));'],
['<?php $x = [($y ? [true] : [false])];', '<?php $x = array(($y ? array(true) : array(false)));'],
['<?php $x = [($y ? [true] : [ false ])];', '<?php $x = array(($y ? array(true) : array( false )));'],
['<?php $x = [($y ? ["t" => true] : ["f" => false])];', '<?php $x = array(($y ? array("t" => true) : array("f" => false)));'],
['<?php print_r([($y ? true : false)]);', '<?php print_r(array(($y ? true : false)));'],
['<?php $x = [[[]]];', '<?php $x = array(array(array()));'],
['<?php $x = [[[]]]; $y = [[[]]];', '<?php $x = array(array(array())); $y = array(array(array()));'],
['<?php function(array $foo = []) {};', '<?php function(array $foo = array()) {};'],
['<?php function(array $foo) {};'],
['<?php function(array $foo = []) {};', '<?php function(array $foo = array()) {};'],
['<?php $a = [ ];', '<?php $a = array ( );'],
];
}
}