packages/ztd-query-sqlite/tests/Unit/Sql/Lexing/OpaqueSqlSpanTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Sql\Lexing;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\Attributes\UsesClass;
9use PHPUnit\Framework\TestCase;
10use ZtdQuery\Platform\Sqlite\Sql\Lexing\OpaqueSqlSpan;
11
12#[CoversClass(OpaqueSqlSpan::class)]
13#[UsesClass(\ZtdQuery\Platform\Sqlite\Sql\Lexing\QuotedSpan::class)]
14final class OpaqueSqlSpanTest extends TestCase
15{
16 public function testLengthDistinguishesSyntaxAndOpaqueSpans(): void
17 {
18 $span = new OpaqueSqlSpan();
19 self::assertNull($span->length('SELECT'));
20 self::assertNull($span->length(''));
21 self::assertSame(5, $span->length("-- x\nSELECT"));
22 self::assertSame(3, $span->length("#x\nSELECT"));
23 self::assertSame(7, $span->length('/* x */SELECT'));
24 self::assertSame(4, $span->length('/* x'));
25 self::assertSame(6, $span->length("'a''b' + 1"));
26 self::assertSame(3, $span->length('"a" + 1'));
27 self::assertSame(3, $span->length('`a` + 1'));
28 self::assertSame(3, $span->length('[a] + 1'));
29 self::assertSame(2, $span->length('[a'));
30 }
31
32}
33