packages/sql-catalog/tests/Unit/Core/Text/TextHoleTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Core\Text;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\Attributes\UsesClass;
9use PHPUnit\Framework\TestCase;
10use SqlCatalog\Core\Text\Origin;
11use SqlCatalog\Core\Text\TextHole;
12use SqlCatalog\Core\Type\TypeShape;
13
14#[CoversClass(TextHole::class)]
15#[UsesClass(TypeShape::class)]
16final class TextHoleTest extends TestCase
17{
18 public function testDisplayIsTheGapMarker(): void
19 {
20 self::assertSame('{$}', (new TextHole(Origin::External, TypeShape::unknown()))->display());
21 }
22
23 public function testKeepsWhereTheValueCameFrom(): void
24 {
25 $hole = new TextHole(Origin::Parameter, TypeShape::of(['string']), '$name');
26 self::assertSame(Origin::Parameter, $hole->origin);
27 self::assertSame('string', $hole->type->display());
28 self::assertSame('$name', $hole->expression);
29 }
30
31 public function testExpressionIsOptional(): void
32 {
33 self::assertNull((new TextHole(Origin::Loop, TypeShape::unknown()))->expression);
34 }
35}
36