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