mirror of
https://code.mensbeam.com/MensBeam/Arsse.git
synced 2024-12-23 17:12:41 +00:00
43 lines
1.3 KiB
PHP
43 lines
1.3 KiB
PHP
|
<?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;
|
||
|
|
||
|
/**
|
||
|
* @covers \JKingWeb\Arsse\Db\PDOStatement<extended>
|
||
|
* @covers \JKingWeb\Arsse\Db\PDOError */
|
||
|
class TestStatement extends \JKingWeb\Arsse\TestCase\Db\BaseStatement {
|
||
|
protected $implementation = "PDO PostgreSQL";
|
||
|
|
||
|
public function tearDown() {
|
||
|
parent::tearDown();
|
||
|
unset($this->interface);
|
||
|
}
|
||
|
|
||
|
protected function exec(string $q) {
|
||
|
$this->interface->exec($q);
|
||
|
}
|
||
|
|
||
|
protected function makeStatement(string $q, array $types = []): array {
|
||
|
return [$this->interface, $this->interface->prepare($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)."'";
|
||
|
} else {
|
||
|
return $value;
|
||
|
}
|
||
|
default:
|
||
|
return $value;
|
||
|
}
|
||
|
}
|
||
|
}
|