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