packages/ztd-query-postgres/tests/Unit/Sql/Diagnostic/KeywordSearchTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Sql\Diagnostic;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\TestCase;
9
10#[CoversClass(\ZtdQuery\Platform\Postgres\Sql\Diagnostic\KeywordSearch::class)]
11#[\PHPUnit\Framework\Attributes\UsesClass(\ZtdQuery\Platform\Postgres\Sql\PgSqlLexerProfile::class)]
12final class KeywordSearchTest extends TestCase
13{
14 public function testContainsKeyword(): void
15 {
16 $sql = 'EXPLAIN SELECT 1';
17 $tokens = \ZtdQuery\Sql\SqlTokenStream::tokenize($sql, \ZtdQuery\Platform\Postgres\Sql\PgSqlLexerProfile::create())->significantTokens();
18
19 self::assertSame(true, \ZtdQuery\Platform\Postgres\Sql\Diagnostic\KeywordSearch::containsKeyword($tokens, ['VACUUM', 'EXPLAIN']));
20
21 $sql = 'EXPLAIN SELECT 1';
22 $tokens = \ZtdQuery\Sql\SqlTokenStream::tokenize($sql, \ZtdQuery\Platform\Postgres\Sql\PgSqlLexerProfile::create())->significantTokens();
23
24 self::assertSame(false, \ZtdQuery\Platform\Postgres\Sql\Diagnostic\KeywordSearch::containsKeyword($tokens, ['ANALYZE']));
25 }
26}
27