packages/sql-parser/tests/Unit/Lexer/SourcePositionTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Lexer;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\Attributes\Small;
9use PHPUnit\Framework\TestCase;
10use SqlParser\Lexer\SourcePosition;
11
12#[CoversClass(SourcePosition::class)]
13#[Small]
14final class SourcePositionTest extends TestCase
15{
16 public function testAt(): void
17 {
18 $position = SourcePosition::at("SELECT 1\nFROM t", 12);
19
20 self::assertSame(2, $position->line);
21 self::assertSame(4, $position->column);
22 }
23
24 public function testAtTheStartAndPastTheEnd(): void
25 {
26 self::assertSame([1, 1], [SourcePosition::at('SELECT', 0)->line, SourcePosition::at('SELECT', 0)->column]);
27 self::assertSame([1, 7], [SourcePosition::at('SELECT', 99)->line, SourcePosition::at('SELECT', 99)->column]);
28 self::assertSame(1, SourcePosition::at('SELECT', -5)->column);
29 }
30}
31