packages/bison-parser/tests/Unit/Ast/Rule/SymbolItemTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Ast\Rule;
6
7use BisonParser\Ast\Location;
8use BisonParser\Ast\Rule\SymbolItem;
9use BisonParser\Ast\Symbol;
10use BisonParser\Ast\SymbolKind;
11use PHPUnit\Framework\Attributes\CoversClass;
12use PHPUnit\Framework\Attributes\Small;
13use PHPUnit\Framework\Attributes\UsesClass;
14use PHPUnit\Framework\TestCase;
15
16#[CoversClass(SymbolItem::class)]
17#[UsesClass(Location::class)]
18#[UsesClass(Symbol::class)]
19#[UsesClass(SymbolKind::class)]
20#[Small]
21final class SymbolItemTest extends TestCase
22{
23 public function testLocation(): void
24 {
25 $item = new SymbolItem(new Symbol(SymbolKind::CharLiteral, '+', new Location(5, 9)), 'op');
26
27 self::assertSame('5:9', (string) $item->location());
28 self::assertSame('+', $item->symbol->value);
29 self::assertSame('op', $item->namedReference);
30 }
31}
32