packages/sql-faker/tests/Unit/Compiler/Bison/BisonPreambleTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\SqlFaker\Compiler\Bison;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\Attributes\UsesClass;
9use PHPUnit\Framework\TestCase;
10use SqlFaker\Compiler\Bison\Ast\BisonStartDeclaration;
11use SqlFaker\Compiler\Bison\BisonPreamble;
12
13#[CoversClass(BisonPreamble::class)]
14#[UsesClass(BisonStartDeclaration::class)]
15final class BisonPreambleTest extends TestCase
16{
17    public function testItKeepsThePrologueAndTheDeclarationsApart(): void
18    {
19        $declaration = new BisonStartDeclaration('statement');
20
21        $preamble = new BisonPreamble('%{ int x; %}', [$declaration]);
22
23        self::assertSame('%{ int x; %}', $preamble->prologue);
24        self::assertSame([$declaration], $preamble->declarations);
25    }
26
27    public function testItReportsAnAbsentPrologueAsNull(): void
28    {
29        $preamble = new BisonPreamble(null, []);
30
31        self::assertNull($preamble->prologue);
32        self::assertSame([], $preamble->declarations);
33    }
34}
35