packages/sql-catalog/tests/Unit/Core/Sql/SqlTokenTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Core\Sql;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\TestCase;
9use SqlCatalog\Core\Sql\SqlToken;
10use SqlCatalog\Core\Sql\SqlTokenKind;
11
12#[CoversClass(SqlToken::class)]
13final class SqlTokenTest extends TestCase
14{
15    public function testKeywordUpperCasesTheToken(): void
16    {
17        self::assertSame('SELECT', (new SqlToken(SqlTokenKind::Word, 'select', 0, 0))->keyword());
18    }
19
20    public function testIsTopLevelKeywordNeedsTheRightWordKindAndDepth(): void
21    {
22        self::assertTrue((new SqlToken(SqlTokenKind::Word, 'select', 0, 0))->isTopLevelKeyword('SELECT'));
23        self::assertFalse((new SqlToken(SqlTokenKind::Word, 'select', 0, 1))->isTopLevelKeyword('SELECT'));
24        self::assertFalse((new SqlToken(SqlTokenKind::Text, 'select', 0, 0))->isTopLevelKeyword('SELECT'));
25        self::assertFalse((new SqlToken(SqlTokenKind::Word, 'from', 0, 0))->isTopLevelKeyword('SELECT'));
26    }
27}
28