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