packages/lemon-parser/tests/Unit/Ast/Declaration/TokenClassTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Ast\Declaration;
6
7use LemonParser\Ast\Declaration\TokenClass;
8use LemonParser\Ast\Location;
9use LemonParser\Ast\Symbol;
10use PHPUnit\Framework\Attributes\CoversClass;
11use PHPUnit\Framework\Attributes\Small;
12use PHPUnit\Framework\Attributes\UsesClass;
13use PHPUnit\Framework\TestCase;
14
15#[CoversClass(TokenClass::class)]
16#[UsesClass(Location::class)]
17#[UsesClass(Symbol::class)]
18#[Small]
19final class TokenClassTest extends TestCase
20{
21 public function testLocation(): void
22 {
23 $declaration = new TokenClass(new Symbol('id', new Location(3, 14)), [new Symbol('ID', new Location(3, 17)), new Symbol('INDEXED', new Location(3, 20))], new Location(3, 1));
24
25 self::assertSame('3:1', (string) $declaration->location());
26 self::assertSame('id', $declaration->name->name);
27 self::assertSame(['ID', 'INDEXED'], array_map(static fn (Symbol $symbol): string => $symbol->name, $declaration->tokens));
28 }
29}
30