packages/sql-faker/tests/Unit/Generation/Candidate/VersionCaseTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\SqlFaker\Generation\Candidate;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\Attributes\UsesClass;
9use PHPUnit\Framework\TestCase;
10use SqlFaker\Generation\Candidate\FixedLexemeGenerator;
11use SqlFaker\Generation\Candidate\VersionCase;
12use SqlFaker\Generation\Lexeme\LexemeGenerator;
13
14#[CoversClass(VersionCase::class)]
15#[UsesClass(FixedLexemeGenerator::class)]
16#[UsesClass(LexemeGenerator::class)]
17#[UsesClass(\SqlFaker\Generation\Lexeme\Lexeme::class)]
18#[UsesClass(\SqlFaker\Generation\Lexeme\LexemeCandidates::class)]
19#[UsesClass(\SqlFaker\Generation\Lexeme\LexemeInput::class)]
20#[UsesClass(\SqlFaker\Generation\Lexeme\LexemeSequence::class)]
21#[UsesClass(\SqlFaker\Generation\Lexeme\ResolvedOutput::class)]
22#[UsesClass(\SqlFaker\Generation\Lexeme\SpacingConstraint::class)]
23#[UsesClass(\SqlFaker\Generation\Token\ProductionOccurrence::class)]
24#[UsesClass(\SqlFaker\Generation\Token\TerminalOccurrence::class)]
25#[UsesClass(\SqlFaker\Generation\Token\TerminalSequence::class)]
26final class VersionCaseTest extends TestCase
27{
28 public function testSharesOneDefinitionAcrossExplicitReviewedVersions(): void
29 {
30 $definition = new FixedLexemeGenerator('NOW', 'function', 'lex.h');
31 $case = new VersionCase(['mysql-8.4.7', 'mysql-9.1.0'], $definition, 'now');
32 self::assertSame($definition, $case->generator);
33 self::assertSame(['mysql-8.4.7', 'mysql-9.1.0'], $case->versions);
34 }
35}
36