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