packages/bison-parser/tests/Unit/Ast/Declaration/ParamTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Ast\Declaration;
6
7use BisonParser\Ast\Declaration\Param;
8use BisonParser\Ast\Declaration\ParamKind;
9use BisonParser\Ast\Location;
10use PHPUnit\Framework\Attributes\CoversClass;
11use PHPUnit\Framework\Attributes\Small;
12use PHPUnit\Framework\Attributes\UsesClass;
13use PHPUnit\Framework\TestCase;
14
15#[CoversClass(Param::class)]
16#[UsesClass(Location::class)]
17#[UsesClass(ParamKind::class)]
18#[Small]
19final class ParamTest extends TestCase
20{
21    public function testLocation(): void
22    {
23        $declaration = new Param(ParamKind::Lex, ['int *n', 'char c'], new Location(3, 1));
24
25        self::assertSame('3:1', (string) $declaration->location());
26        self::assertSame(ParamKind::Lex, $declaration->kind);
27        self::assertSame(['int *n', 'char c'], $declaration->codes);
28    }
29}
30