File: ConstExprToStringTest.php

package info (click to toggle)
php-phpstan-phpdoc-parser 2.2.0-2
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 2,476 kB
  • sloc: php: 21,130; makefile: 50; xml: 42; sh: 17
file content (66 lines) | stat: -rw-r--r-- 2,399 bytes parent folder | download | duplicates (3)
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
<?php declare(strict_types = 1);

namespace PHPStan\PhpDocParser\Ast\ToString;

use Generator;
use PHPStan\PhpDocParser\Ast\ConstExpr\ConstExprArrayItemNode;
use PHPStan\PhpDocParser\Ast\ConstExpr\ConstExprArrayNode;
use PHPStan\PhpDocParser\Ast\ConstExpr\ConstExprFalseNode;
use PHPStan\PhpDocParser\Ast\ConstExpr\ConstExprFloatNode;
use PHPStan\PhpDocParser\Ast\ConstExpr\ConstExprIntegerNode;
use PHPStan\PhpDocParser\Ast\ConstExpr\ConstExprNullNode;
use PHPStan\PhpDocParser\Ast\ConstExpr\ConstExprStringNode;
use PHPStan\PhpDocParser\Ast\ConstExpr\ConstExprTrueNode;
use PHPStan\PhpDocParser\Ast\ConstExpr\ConstFetchNode;
use PHPStan\PhpDocParser\Ast\Node;
use PHPStan\PhpDocParser\Printer\Printer;
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\TestCase;

class ConstExprToStringTest extends TestCase
{

	/**
	 * @dataProvider provideConstExprCases
	 */
	#[DataProvider('provideConstExprCases')]
	public function testToString(string $expected, Node $node): void
	{
		$this->assertSame($expected, (string) $node);
	}

	/**
	 * @dataProvider provideConstExprCases
	 */
	#[DataProvider('provideConstExprCases')]
	public function testPrinter(string $expected, Node $node): void
	{
		$printer = new Printer();
		$this->assertSame($expected, $printer->print($node));
	}

	public static function provideConstExprCases(): Generator
	{
		yield from [
			['null', new ConstExprNullNode()],
			['true', new ConstExprTrueNode()],
			['false', new ConstExprFalseNode()],
			['8', new ConstExprIntegerNode('8')],
			['21.37', new ConstExprFloatNode('21.37')],
			['\'foo\'', new ConstExprStringNode('foo', ConstExprStringNode::SINGLE_QUOTED)],
			['"foo"', new ConstExprStringNode('foo', ConstExprStringNode::DOUBLE_QUOTED)],
			['FooBar', new ConstFetchNode('', 'FooBar')],
			['Foo\\Bar::Baz', new ConstFetchNode('Foo\\Bar', 'Baz')],
			['[]', new ConstExprArrayNode([])],
			[
				"['foo', 4 => 'foo', 'bar' => 'baz']",
				new ConstExprArrayNode([
					new ConstExprArrayItemNode(null, new ConstExprStringNode('foo', ConstExprStringNode::SINGLE_QUOTED)),
					new ConstExprArrayItemNode(new ConstExprIntegerNode('4'), new ConstExprStringNode('foo', ConstExprStringNode::SINGLE_QUOTED)),
					new ConstExprArrayItemNode(new ConstExprStringNode('bar', ConstExprStringNode::SINGLE_QUOTED), new ConstExprStringNode('baz', ConstExprStringNode::SINGLE_QUOTED)),
				]),
			],
		];
	}

}