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