packages/sql-faker/tests/Unit/Generation/Lexeme/LexemeBoundaryTest.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\LexemeBoundary;
12use SqlFaker\Generation\Token\TerminalOccurrence;
13
14#[CoversClass(LexemeBoundary::class)]
15#[UsesClass(Lexeme::class)]
16#[UsesClass(TerminalOccurrence::class)]
17final class LexemeBoundaryTest extends TestCase
18{
19    public function testPreservesDirectionAcrossACompoundBoundary(): void
20    {
21        $origin = new TerminalOccurrence('WITH_ROLLUP', 0);
22        $left = new Lexeme('WITH', 'keyword', $origin, 'source', 'phrase');
23        $right = new Lexeme('ROLLUP', 'keyword', $origin, 'source', 'phrase');
24        $boundary = new LexemeBoundary($left, $right);
25        self::assertSame($left, $boundary->left);
26        self::assertSame($right, $boundary->right);
27    }
28}
29