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