packages/sql-semantics/tests/Unit/Core/AnalysisExceptionTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Core;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\Attributes\Medium;
9use PHPUnit\Framework\Attributes\UsesClass;
10use PHPUnit\Framework\TestCase;
11use RuntimeException;
12
13#[CoversClass(\SqlSemantics\Core\AnalysisException::class)]
14#[UsesClass(\SqlSemantics\Core\Analysis\Analyzer::class)]
15#[UsesClass(\SqlSemantics\Core\Analysis\ValueReader::class)]
16#[UsesClass(\SqlSemantics\Facade\Semantics::class)]
17#[UsesClass(\SqlSemantics\Statement\Element::class)]
18#[UsesClass(\SqlSemantics\Statement\Statement::class)]
19#[UsesClass(\SqlSemantics\Statement\Writer::class)]
20#[UsesClass(\SqlSemantics\Statement\Assertion::class)]
21#[UsesClass(\SqlSemantics\Statement\ImmutableGraph::class)]
22#[UsesClass(\SqlSemantics\Core\Ast\DialectParser::class)]
23#[UsesClass(\SqlSemantics\Platform\MySql\Platform::class)]
24#[UsesClass(\SqlSemantics\Platform\PostgreSql\Platform::class)]
25#[UsesClass(\SqlSemantics\Platform\Sqlite\Platform::class)]
26#[Medium]
27final class AnalysisExceptionTest extends TestCase
28{
29 public function testTheOriginalFailureRemainsAvailable(): void
30 {
31 $cause = new RuntimeException('Expected a statement');
32 $failure = new \SqlSemantics\Core\AnalysisException('Invalid SQL', 0, $cause);
33 self::assertSame('Invalid SQL', $failure->getMessage());
34 self::assertSame($cause, $failure->getPrevious());
35 }
36}
37