packages/bison-parser/tests/Unit/Ast/Declaration/Symbols/SymbolDeclarationTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Ast\Declaration\Symbols;
6
7use BisonParser\Ast\Declaration\Symbols\Alias;
8use BisonParser\Ast\Declaration\Symbols\SymbolClass;
9use BisonParser\Ast\Declaration\Symbols\SymbolDeclaration;
10use BisonParser\Ast\Declaration\Symbols\SymbolEntry;
11use BisonParser\Ast\Location;
12use BisonParser\Ast\Symbol;
13use BisonParser\Ast\SymbolKind;
14use PHPUnit\Framework\Attributes\CoversClass;
15use PHPUnit\Framework\Attributes\Small;
16use PHPUnit\Framework\Attributes\UsesClass;
17use PHPUnit\Framework\TestCase;
18
19#[CoversClass(SymbolDeclaration::class)]
20#[UsesClass(Location::class)]
21#[UsesClass(Alias::class)]
22#[UsesClass(Symbol::class)]
23#[UsesClass(SymbolClass::class)]
24#[UsesClass(SymbolEntry::class)]
25#[UsesClass(SymbolKind::class)]
26#[Small]
27final class SymbolDeclarationTest extends TestCase
28{
29 public function testLocation(): void
30 {
31 $declaration = new SymbolDeclaration(SymbolClass::Token, [new SymbolEntry(new Symbol(SymbolKind::Identifier, 'NUM', new Location(3, 13)), 'int', 258, new Alias('number', false, new Location(3, 21)))], new Location(3, 1));
32
33 self::assertSame('3:1', (string) $declaration->location());
34 self::assertSame(SymbolClass::Token, $declaration->class);
35 self::assertSame('NUM', $declaration->entries[0]->symbol->value);
36 }
37}
38