packages/sql-faker/tests/Unit/Grammar/Model/SymbolTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\SqlFaker\Grammar\Model;
6
7use PHPUnit\Framework\Attributes\CoversNothing;
8use PHPUnit\Framework\TestCase;
9use SqlFaker\Grammar\Model\NonTerminal;
10use SqlFaker\Grammar\Model\Symbol;
11use SqlFaker\Grammar\Model\Terminal;
12
13#[CoversNothing]
14final class SymbolTest extends TestCase
15{
16 public function testEveryImplementationReportsItsOwnValue(): void
17 {
18 $symbols = [new Terminal('SELECT_SYM'), new NonTerminal('statement')];
19
20 self::assertSame(
21 ['SELECT_SYM', 'statement'],
22 array_map(static fn (Symbol $symbol): string => $symbol->value(), $symbols),
23 );
24 }
25
26 public function testValueAnswersTheNameTheGrammarSpells(): void
27 {
28 self::assertSame('SELECT', (new Terminal('SELECT'))->value());
29 self::assertSame('expr', (new NonTerminal('expr'))->value());
30 }
31}
32