packages/ztd-query-mysql/tests/Unit/Sql/Diagnostic/DiagnosticKeywordsTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Sql\Diagnostic;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\TestCase;
9use ZtdQuery\Platform\MySql\Sql\Diagnostic\DiagnosticKeywords;
10
11#[\PHPUnit\Framework\Attributes\UsesClass(\ZtdQuery\Platform\MySql\Sql\MySqlLexerProfile::class)]
12#[CoversClass(DiagnosticKeywords::class)]
13final class DiagnosticKeywordsTest extends TestCase
14{
15    public function testContainsKeywordIgnoresQuotedText(): void
16    {
17        $tokens = \ZtdQuery\Sql\SqlTokenStream::tokenize("SELECT 'INTO', `UPDATE`", \ZtdQuery\Platform\MySql\Sql\MySqlLexerProfile::create())->significantTokens();
18        self::assertTrue(DiagnosticKeywords::containsKeyword($tokens, ['UPDATE', 'SELECT']));
19        self::assertFalse(DiagnosticKeywords::containsKeyword($tokens, ['INTO', 'UPDATE']));
20        self::assertFalse(DiagnosticKeywords::containsKeyword([], ['SELECT']));
21    }
22
23}
24