packages/sql-parser/tests/Unit/Lexer/TokenTest.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\Token;
11
12#[CoversClass(Token::class)]
13#[Small]
14final class TokenTest extends TestCase
15{
16    public function testEnd(): void
17    {
18        self::assertSame(9, (new Token(3, 'SELECT_SYM', 'SELECT', 3))->end());
19        self::assertSame(3, (new Token(0, '$end', '', 3))->end());
20    }
21
22    public function testIs(): void
23    {
24        $token = new Token(3, 'SELECT_SYM', 'select', 0);
25
26        self::assertTrue($token->is('SELECT_SYM'));
27        self::assertFalse($token->is('select'));
28    }
29
30    public function testToStringWritesTheTriviaBeforeTheText(): void
31    {
32        self::assertSame(' /* one */ 1', (new Token(7, 'NUM', '1', 11, ' /* one */ '))->toString());
33        self::assertSame('SELECT', (new Token(3, 'SELECT_SYM', 'SELECT', 0))->toString());
34        self::assertSame("\n-- done\n", (new Token(0, '$end', '', 9, "\n-- done\n"))->toString());
35    }
36}
37