packages/sql-faker/tests/Unit/Compiler/Bison/Ast/BisonDeclarationTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\SqlFaker\Compiler\Bison\Ast;
6
7use PHPUnit\Framework\Attributes\CoversNothing;
8use PHPUnit\Framework\TestCase;
9use SqlFaker\Compiler\Bison\Ast\BisonAst;
10use SqlFaker\Compiler\Bison\Ast\BisonDefineDeclaration;
11use SqlFaker\Compiler\Bison\Ast\BisonExpectDeclaration;
12use SqlFaker\Compiler\Bison\Ast\BisonParamDeclaration;
13use SqlFaker\Compiler\Bison\Ast\BisonPrecedenceDeclaration;
14use SqlFaker\Compiler\Bison\Ast\BisonStartDeclaration;
15use SqlFaker\Compiler\Bison\Ast\BisonTokenDeclaration;
16use SqlFaker\Compiler\Bison\Ast\BisonTokenDefinition;
17use SqlFaker\Compiler\Bison\Ast\BisonTypeDeclaration;
18use SqlFaker\Compiler\Bison\Ast\BisonUnknownDeclaration;
19
20#[CoversNothing]
21final class BisonDeclarationTest extends TestCase
22{
23 public function testEveryDeclarationKindCanBeCarriedByAnAst(): void
24 {
25 $declarations = [
26 new BisonStartDeclaration('statement'),
27 new BisonExpectDeclaration(3),
28 new BisonDefineDeclaration('api.pure', null),
29 new BisonParamDeclaration('parse-param', 'THD *thd'),
30 new BisonPrecedenceDeclaration('left', null, ['OR_SYM']),
31 new BisonTokenDeclaration('<lexer>', [new BisonTokenDefinition('SELECT_SYM', null, null)]),
32 new BisonTypeDeclaration('<num>', ['expr']),
33 new BisonUnknownDeclaration('%pure-parser', ''),
34 ];
35
36 $ast = new BisonAst('statement', null, $declarations, [], null);
37
38 self::assertSame($declarations, $ast->declarations);
39 }
40}
41