packages/sql-parser/tests/Unit/Table/PackedRowsTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Table;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\Attributes\Small;
9use PHPUnit\Framework\Attributes\UsesClass;
10use PHPUnit\Framework\TestCase;
11use SqlParser\Table\PackedRows;
12use SqlParser\Table\TableCodec;
13
14#[CoversClass(PackedRows::class)]
15#[UsesClass(TableCodec::class)]
16#[Small]
17final class PackedRowsTest extends TestCase
18{
19 public function testRow(): void
20 {
21 $codec = new TableCodec();
22 $first = $codec->encodeRow([5 => 3, 1 => -2]);
23 $second = $codec->encodeRow([2 => -2147483648]);
24 $rows = new PackedRows($first . $second, [0, strlen($first), strlen($first . $second)]);
25
26 self::assertSame([1 => -2, 5 => 3], $rows->row(0));
27 self::assertSame([2 => -2147483648], $rows->row(1));
28 self::assertSame([1 => -2, 5 => 3], $rows->row(0));
29 }
30
31 public function testRowIsEmptyForAStateWithoutActionsOrOutOfRange(): void
32 {
33 $rows = new PackedRows('', [0, 0]);
34
35 self::assertSame([], $rows->row(0));
36 self::assertSame([], $rows->row(3));
37 }
38
39 public function testCount(): void
40 {
41 self::assertSame(2, (new PackedRows('', [0, 0, 0]))->count());
42 self::assertSame(0, (new PackedRows('', []))->count());
43 }
44}
45