packages/ztd-query-sqlite/tests/Unit/Sql/Value/ValueLiteralRendererTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Sql\Value;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\TestCase;
9use ZtdQuery\Platform\Sqlite\Sql\Value\ValueLiteralRenderer;
10
11#[CoversClass(ValueLiteralRenderer::class)]
12final class ValueLiteralRendererTest extends TestCase
13{
14    public function testQuoteValueEscapesApostrophesWithoutInterpretingBytes(): void
15    {
16        $renderer = new ValueLiteralRenderer();
17        self::assertSame("'O''Brien'", $renderer->quoteValue("O'Brien"));
18        self::assertSame("''", $renderer->quoteValue(''));
19        self::assertSame("'a\0b'", $renderer->quoteValue("a\0b"));
20    }
21
22    public function testReadStreamPreservesTheCallerPosition(): void
23    {
24        $stream = fopen('php://memory', 'r+');
25        self::assertIsResource($stream);
26        fwrite($stream, "a\0b");
27        fseek($stream, 1);
28        self::assertSame("a\0b", (new ValueLiteralRenderer())->readStream($stream));
29        self::assertSame(1, ftell($stream));
30        fclose($stream);
31    }
32
33}
34