packages/bison-parser/tests/Unit/Scanner/DirectivesTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Scanner;
6
7use BisonParser\Scanner\Directives;
8use PHPUnit\Framework\Attributes\CoversClass;
9use PHPUnit\Framework\Attributes\Small;
10use PHPUnit\Framework\TestCase;
11
12#[CoversClass(Directives::class)]
13#[Small]
14final class DirectivesTest extends TestCase
15{
16    public function testCanonical(): void
17    {
18        self::assertSame('token', Directives::canonical('token'));
19        self::assertSame('token', Directives::canonical('term'));
20        self::assertSame('nonassoc', Directives::canonical('binary'));
21        self::assertSame('pure-parser', Directives::canonical('pure_parser'));
22        self::assertSame('header', Directives::canonical('defines'));
23        self::assertSame('expect-rr', Directives::canonical('expect_rr'));
24        self::assertSame('name-prefix', Directives::canonical('name_prefix'));
25        self::assertSame('fixed-output-files', Directives::canonical('fixed-output_files'));
26        self::assertSame('no-default-prec', Directives::canonical('no_default-prec'));
27        self::assertSame('token-table', Directives::canonical('token_table'));
28        self::assertNull(Directives::canonical('token_tabl'));
29        self::assertNull(Directives::canonical('parse_param'));
30        self::assertNull(Directives::canonical('tokens'));
31        self::assertNull(Directives::canonical(''));
32        self::assertContains('glr-parser', Directives::FLAGS);
33        self::assertArrayHasKey('header', Directives::OPTIONS);
34        self::assertContains('output', Directives::EQUAL_OPTIONAL);
35    }
36}
37