packages/sql-fixture/tests/Unit/Platform/MySql/Value/GeometryGeneratorTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Platform\MySql\Value;
6
7use Faker\Factory;
8use PHPUnit\Framework\Attributes\CoversClass;
9use PHPUnit\Framework\TestCase;
10use SqlFixture\Platform\MySql\Value\GeometryGenerator as Subject;
11use SqlFixture\Schema\ColumnDefinition;
12
13#[CoversClass(Subject::class)]
14#[\PHPUnit\Framework\Attributes\UsesClass(\SqlFixture\Platform\MySql\Value\SpatialGenerator::class)]
15#[\PHPUnit\Framework\Attributes\UsesClass(ColumnDefinition::class)]
16final class GeometryGeneratorTest extends TestCase
17{
18    public function testGeneratePointUsesRequestedWktType(): void
19    {
20        self::assertStringStartsWith('POINT(', (new Subject())->generate(Factory::create(), new ColumnDefinition('shape', 'POINT')));
21    }
22
23    public function testGeneratePolygonUsesRequestedWktType(): void
24    {
25        self::assertStringStartsWith('POLYGON(', (new Subject())->generate(Factory::create(), new ColumnDefinition('shape', 'POLYGON')));
26    }
27
28    public function testGenerateMultipointUsesRequestedWktType(): void
29    {
30        self::assertStringStartsWith('MULTIPOINT(', (new Subject())->generate(Factory::create(), new ColumnDefinition('shape', 'MULTIPOINT')));
31    }
32
33    public function testGenerateGeometrycollectionUsesRequestedWktType(): void
34    {
35        self::assertStringStartsWith('GEOMETRYCOLLECTION(', (new Subject())->generate(Factory::create(), new ColumnDefinition('shape', 'GEOMETRYCOLLECTION')));
36    }
37}
38