packages/lemon-parser/tests/Unit/Ast/Declaration/PrecedenceDeclarationTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Ast\Declaration;
6
7use LemonParser\Ast\Declaration\Associativity;
8use LemonParser\Ast\Declaration\PrecedenceDeclaration;
9use LemonParser\Ast\Location;
10use LemonParser\Ast\Symbol;
11use PHPUnit\Framework\Attributes\CoversClass;
12use PHPUnit\Framework\Attributes\Small;
13use PHPUnit\Framework\Attributes\UsesClass;
14use PHPUnit\Framework\TestCase;
15
16#[CoversClass(PrecedenceDeclaration::class)]
17#[UsesClass(Location::class)]
18#[UsesClass(Associativity::class)]
19#[UsesClass(Symbol::class)]
20#[Small]
21final class PrecedenceDeclarationTest extends TestCase
22{
23    public function testLocation(): void
24    {
25        $declaration = new PrecedenceDeclaration(Associativity::Right, [new Symbol('NOT', new Location(3, 8))], new Location(3, 1));
26
27        self::assertSame('3:1', (string) $declaration->location());
28        self::assertSame(Associativity::Right, $declaration->associativity);
29        self::assertSame('NOT', $declaration->symbols[0]->name);
30    }
31}
32