packages/ztd-query-postgres/tests/Unit/Sql/Value/NativeCastTargetTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Sql\Value;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\TestCase;
9
10#[CoversClass(\ZtdQuery\Platform\Postgres\Sql\Value\NativeCastTarget::class)]
11final class NativeCastTargetTest extends TestCase
12{
13 public function testIntegerPreservesWidths(): void
14 {
15 self::assertSame('SMALLINT', \ZtdQuery\Platform\Postgres\Sql\Value\NativeCastTarget::integer('int2'));
16 self::assertSame('BIGINT', \ZtdQuery\Platform\Postgres\Sql\Value\NativeCastTarget::integer('BIGSERIAL'));
17 self::assertSame('INTEGER', \ZtdQuery\Platform\Postgres\Sql\Value\NativeCastTarget::integer('INTEGER'));
18 }
19
20 public function testDecimalPreservesPrecision(): void
21 {
22 self::assertSame('NUMERIC(10,2)', \ZtdQuery\Platform\Postgres\Sql\Value\NativeCastTarget::decimal('decimal(10,2)'));
23 self::assertSame('NUMERIC(8,0)', \ZtdQuery\Platform\Postgres\Sql\Value\NativeCastTarget::decimal('NUMERIC(8)'));
24 self::assertSame('NUMERIC', \ZtdQuery\Platform\Postgres\Sql\Value\NativeCastTarget::decimal('DECIMAL'));
25 }
26
27 public function testStringPreservesBounds(): void
28 {
29 self::assertSame('VARCHAR(20)', \ZtdQuery\Platform\Postgres\Sql\Value\NativeCastTarget::string('varchar(20)'));
30 self::assertSame('VARCHAR', \ZtdQuery\Platform\Postgres\Sql\Value\NativeCastTarget::string('CHARACTER VARYING'));
31 self::assertSame('TEXT', \ZtdQuery\Platform\Postgres\Sql\Value\NativeCastTarget::string('CHAR(5)'));
32 }
33}
34