packages/sql-faker/tests/Unit/Generation/Lexeme/OutputPartTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\SqlFaker\Generation\Lexeme;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\Attributes\UsesClass;
9use PHPUnit\Framework\TestCase;
10use SqlFaker\Generation\Lexeme\Lexeme;
11use SqlFaker\Generation\Lexeme\OutputPart;
12use SqlFaker\Generation\Token\TerminalOccurrence;
13
14#[CoversClass(OutputPart::class)]
15#[UsesClass(Lexeme::class)]
16#[UsesClass(TerminalOccurrence::class)]
17final class OutputPartTest extends TestCase
18{
19    public function testKeepsTheResolvedSeparatorAndItsRuleSources(): void
20    {
21        $lexeme = new Lexeme('NOW', 'function', new TerminalOccurrence('NOW_SYM', 1), 'lex.h');
22        $part = new OutputPart($lexeme, '', 'now:NOW', ['sql_lex.cc:function'], 1);
23        self::assertSame('', $part->separator);
24        self::assertSame(1, $part->allowed);
25        self::assertSame(['sql_lex.cc:function'], $part->spacingRules);
26        self::assertSame($lexeme, $part->lexeme);
27    }
28}
29