packages/sql-faker/tests/Unit/Compiler/Bison/Ast/BisonTokenDeclarationTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\SqlFaker\Compiler\Bison\Ast;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\TestCase;
9use SqlFaker\Compiler\Bison\Ast\BisonTokenDeclaration;
10use SqlFaker\Compiler\Bison\Ast\BisonTokenDefinition;
11
12#[CoversClass(BisonTokenDeclaration::class)]
13#[CoversClass(BisonTokenDefinition::class)]
14final class BisonTokenDeclarationTest extends TestCase
15{
16    public function testTypeTag(): void
17    {
18        $decl = new BisonTokenDeclaration('<lexer.keyword>', []);
19
20        self::assertSame('<lexer.keyword>', $decl->typeTag);
21    }
22
23    public function testTypeTagNull(): void
24    {
25        $decl = new BisonTokenDeclaration(null, []);
26
27        self::assertNull($decl->typeTag);
28    }
29
30    public function testTokens(): void
31    {
32        $token = new BisonTokenDefinition('SELECT', 123, '"SELECT"');
33        $decl = new BisonTokenDeclaration(null, [$token]);
34
35        self::assertSame([$token], $decl->tokens);
36    }
37}
38