packages/sql-faker/tests/Unit/Generation/Lexeme/LexemeInputTest.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\LexemeInput;
11use SqlFaker\Generation\Lexeme\ResolvedOutput;
12use SqlFaker\Generation\Token\TerminalSequence;
13
14#[CoversClass(LexemeInput::class)]
15#[UsesClass(ResolvedOutput::class)]
16#[UsesClass(TerminalSequence::class)]
17#[UsesClass(\SqlFaker\Generation\Token\TerminalOccurrence::class)]
18#[UsesClass(\SqlFaker\Generation\Lexeme\Lexeme::class)]
19#[UsesClass(\SqlFaker\Generation\Lexeme\LexemeSequence::class)]
20#[UsesClass(\SqlFaker\Generation\Lexeme\SpacingConstraint::class)]
21#[UsesClass(\SqlFaker\Generation\Token\ProductionOccurrence::class)]
22final class LexemeInputTest extends TestCase
23{
24 public function testTerminalUsesTheOccurrenceIndexInsteadOfMatchingRepeatedNames(): void
25 {
26 $sequence = TerminalSequence::fromNames(['IDENT', 'IDENT']);
27 $input = new LexemeInput($sequence, 1, new ResolvedOutput(), 'chosen');
28 self::assertSame($sequence->terminals[1], $input->terminal());
29 self::assertSame('chosen', $input->requested);
30 }
31}
32