packages/sql-parser/tests/Unit/Table/ActionCodeTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Table;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\Attributes\Small;
9use PHPUnit\Framework\TestCase;
10use SqlParser\Table\ActionCode;
11
12#[CoversClass(ActionCode::class)]
13#[Small]
14final class ActionCodeTest extends TestCase
15{
16    public function testShift(): void
17    {
18        self::assertSame(12, ActionCode::shift(12));
19    }
20
21    public function testReduce(): void
22    {
23        self::assertSame(-1, ActionCode::reduce(0));
24        self::assertSame(-6, ActionCode::reduce(5));
25        self::assertSame(ActionCode::ACCEPT, ActionCode::reduce(0));
26    }
27
28    public function testIsShift(): void
29    {
30        self::assertTrue(ActionCode::isShift(0));
31        self::assertFalse(ActionCode::isShift(-1));
32        self::assertFalse(ActionCode::isShift(ActionCode::ERROR));
33    }
34
35    public function testIsReduce(): void
36    {
37        self::assertTrue(ActionCode::isReduce(-3));
38        self::assertFalse(ActionCode::isReduce(3));
39        self::assertFalse(ActionCode::isReduce(ActionCode::ERROR));
40    }
41
42    public function testRule(): void
43    {
44        self::assertSame(5, ActionCode::rule(ActionCode::reduce(5)));
45    }
46}
47