packages/sql-parser/tests/Unit/Grammar/RuleTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Grammar;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\Attributes\Small;
9use PHPUnit\Framework\TestCase;
10use SqlParser\Grammar\Rule;
11
12#[CoversClass(Rule::class)]
13#[Small]
14final class RuleTest extends TestCase
15{
16    public function testLength(): void
17    {
18        self::assertSame(3, (new Rule(1, 5, [1, 2, 3], 0))->length());
19        self::assertSame(0, (new Rule(2, 5, [], 1, true, 7))->length());
20    }
21
22    public function testLengthKeepsTheDeclaredProperties(): void
23    {
24        $rule = new Rule(2, 5, [], 1, true, 7);
25
26        self::assertSame(2, $rule->index);
27        self::assertSame(5, $rule->lhs);
28        self::assertTrue($rule->hidden);
29        self::assertSame(7, $rule->precedenceSymbol);
30        self::assertSame(1, $rule->ordinal);
31    }
32}
33