1
1
Fork 0
mirror of https://code.mensbeam.com/MensBeam/Arsse.git synced 2024-12-23 17:12:41 +00:00
Arsse/tests/cases/Db/PostgreSQL/TestStatement.php

49 lines
1.6 KiB
PHP
Raw Normal View History

<?php
/** @license MIT
* Copyright 2017 J. King, Dustin Wilson et al.
* See LICENSE and AUTHORS files for details */
declare(strict_types=1);
namespace JKingWeb\Arsse\TestCase\Db\PostgreSQL;
/**
* @group slow
2018-12-14 00:56:07 +00:00
* @covers \JKingWeb\Arsse\Db\PostgreSQL\Statement<extended>
2021-03-02 16:11:04 +00:00
* @covers \JKingWeb\Arsse\Db\PostgreSQL\Dispatch
* @covers \JKingWeb\Arsse\Db\SQLState */
class TestStatement extends \JKingWeb\Arsse\TestCase\Db\BaseStatement {
use \JKingWeb\Arsse\Test\DatabaseDrivers\PostgreSQL;
protected function makeStatement(string $q, array $types = []): array {
return [static::$interface, $q, $types];
}
protected function decorateTypeSyntax(string $value, string $type): string {
switch ($type) {
case "float":
return (substr($value, -2) === ".0") ? "'".substr($value, 0, strlen($value) - 2)."'" : "'$value'";
case "string":
if (preg_match("<^char\((\d+)\)$>", $value, $match)) {
return "U&'\\+".str_pad(dechex((int) $match[1]), 6, "0", \STR_PAD_LEFT)."'";
}
return $value;
case "binary":
if ($value[0] === "x") {
return "'\\x".substr($value, 2)."::bytea";
}
// no break;
default:
return $value;
}
}
2019-10-16 18:42:43 +00:00
public static function tearDownAfterClass(): void {
if (static::$interface) {
static::dbRaze(static::$interface);
@pg_close(static::$interface);
static::$interface = null;
}
parent::tearDownAfterClass();
}
}