1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
<?php
declare(strict_types=1);
namespace Doctrine\DBAL\Tests\Functional\Platform;
use Doctrine\DBAL\Platforms\OraclePlatform;
use Doctrine\DBAL\Tests\FunctionalTestCase;
use PHPUnit\Framework\Attributes\DataProvider;
use function key;
class QuotingTest extends FunctionalTestCase
{
#[DataProvider('stringLiteralProvider')]
public function testQuoteStringLiteral(string $string): void
{
$platform = $this->connection->getDatabasePlatform();
$query = $platform->getDummySelectSQL(
$platform->quoteStringLiteral($string),
);
self::assertSame($string, $this->connection->fetchOne($query));
}
/** @return mixed[][] */
public static function stringLiteralProvider(): iterable
{
return [
'backslash' => ['\\'],
'single-quote' => ["'"],
];
}
#[DataProvider('identifierProvider')]
public function testQuoteIdentifier(string $identifier): void
{
$platform = $this->connection->getDatabasePlatform();
/** @link https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements008.htm */
if ($platform instanceof OraclePlatform && $identifier === '"') {
self::markTestSkipped('Oracle does not support double quotes in identifiers');
}
$query = $platform->getDummySelectSQL(
'NULL AS ' . $platform->quoteSingleIdentifier($identifier),
);
$row = $this->connection->fetchAssociative($query);
self::assertNotFalse($row);
self::assertSame($identifier, key($row));
}
/** @return iterable<string,array{0:string}> */
public static function identifierProvider(): iterable
{
return [
'[' => ['['],
']' => [']'],
'"' => ['"'],
'`' => ['`'],
];
}
}
|