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