packages/sql-formatter/tests/Unit/Core/Syntax/BracketsTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Core\Syntax;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\TestCase;
9use SqlFormatter\Core\Syntax\Brackets;
10use SqlFormatter\Core\Syntax\Document;
11use SqlParser\Lexer\Token;
12
13#[CoversClass(Brackets::class)]
14#[CoversClass(Document::class)]
15#[\PHPUnit\Framework\Attributes\UsesClass(\SqlFormatter\Core\Formatter::class)]
16#[\PHPUnit\Framework\Attributes\UsesClass(\SqlFormatter\Core\Compact\Settings::class)]
17#[\PHPUnit\Framework\Attributes\UsesClass(\SqlFormatter\Platform\MySql\Dialect::class)]
18#[\PHPUnit\Framework\Attributes\UsesClass(\SqlFormatter\Platform\PostgreSql\Dialect::class)]
19#[\PHPUnit\Framework\Attributes\UsesClass(\SqlFormatter\Platform\Sqlite\Dialect::class)]
20#[\PHPUnit\Framework\Attributes\UsesClass(\SqlFormatter\Facade\DialectFactory::class)]
21final class BracketsTest extends TestCase
22{
23 public function testMarkPairsNestedParentheses(): void
24 {
25 $document = new Document('');
26 $document->tokens = [new Token(1, 'LP', '(', 0), new Token(2, 'SELECT', 'SELECT', 1), new Token(1, 'LP', '(', 7), new Token(3, 'NUM', '1', 8), new Token(4, 'RP', ')', 9), new Token(4, 'RP', ')', 10)];
27 $document->clauses = [1 => 1];
28 Brackets::mark($document);
29 self::assertSame([2 => 4, 0 => 5], $document->pairs);
30 self::assertSame([0 => true], $document->blocks);
31 }
32}
33