packages/ztd-query-sqlite/tests/Unit/Shadow/Mutation/Upsert/ExpressionCursorTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Shadow\Mutation\Upsert;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\Attributes\UsesClass;
9use PHPUnit\Framework\TestCase;
10use ZtdQuery\Platform\Sqlite\Shadow\Mutation\Upsert\ExpressionCursor;
11use ZtdQuery\Platform\Sqlite\Sql\SqliteLexerProfile;
12use ZtdQuery\Sql\SqlTokenStream;
13
14#[CoversClass(ExpressionCursor::class)]
15#[UsesClass(SqliteLexerProfile::class)]
16final class ExpressionCursorTest extends TestCase
17{
18    public function testInitialPositionAndSourceArePreserved(): void
19    {
20        $tokens = SqlTokenStream::tokenize('1 + 2', SqliteLexerProfile::create())->significantTokens();
21        $cursor = new ExpressionCursor('1 + 2', 'users', $tokens);
22        self::assertSame(0, $cursor->index);
23        self::assertSame('1 + 2', $cursor->sql);
24        self::assertSame('users', $cursor->tableName);
25        self::assertSame($tokens, $cursor->tokens);
26    }
27
28}
29