X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-pq;a=blobdiff_plain;f=tests%2Fconv001.phpt;h=546f00ff7fff58236d43aefe9123eb6155caf96d;hp=084cb062ad5881204db880dc09bf9cf008845354;hb=5ba3107011d4050d5ae5877dae80e382dc228e6a;hpb=7acdd4b540f114ac8e8103df42633d5f741fb210 diff --git a/tests/conv001.phpt b/tests/conv001.phpt index 084cb06..546f00f 100644 --- a/tests/conv001.phpt +++ b/tests/conv001.phpt @@ -3,6 +3,7 @@ converter --SKIPIF-- --INI-- date.timezone=UTC @@ -69,7 +70,7 @@ class JSONConverter extends Converter } function convertFromString($string, $type) { - return json_decode($string); + return json_decode($string, true); } function convertToString($data, $type) { @@ -77,6 +78,43 @@ class JSONConverter extends Converter } } +class Point { + public $x; + public $y; + function __construct($x, $y) { + $this->x = $x; + $this->y = $y; + } +} + +class Box { + public $p1; + public $p2; + function __construct(Point $p1, Point $p2) { + $this->p1 = $p1; + $this->p2 = $p2; + } +} + +class BoxConverter extends Converter +{ + function convertTypes() { + return [ $this->types["box"]->oid ]; + } + + function convertToString($box, $type) { + return sprintf("(%F,%F),(%F,%F)", + $box->p1->x, $box->p1->y, + $box->p2->x, $box->p2->y + ); + } + + function convertFromString($data, $type) { + list($p1x, $p1y, $p2x, $p2y) = sscanf($data, "(%f,%f),(%f,%f)"); + return new Box(new Point($p1x, $p1y), new Point($p2x, $p2y)); + } +} + class Text { private $data; function __construct($data) { @@ -93,11 +131,13 @@ $t = new pq\Types($c); $c->setConverter(new HStoreConverter($t)); $c->setConverter(new IntVectorConverter($t)); -if (!defined("pq\\Types::JSON")) { +if (!(defined("pq\\Types::JSON") && defined("pq\\Result::CONV_JSON"))) { $c->setConverter(new JSONConverter($t)); } +$c->setConverter(new BoxConverter($t)); + $r = $c->execParams("SELECT \$1 as hs, \$2 as iv, \$3 as oids, \$4 as js, \$5 as ia, \$6 as ta, \$7 as ba, \$8 as da, \$9 as dbl, \$10 as bln, ". - "\$11 as dt1, \$12 as dt2, \$13 as dt3, \$14 as dt4, \$15 as dt5, \$16 as dt6, \$17 as dt7, \$18 as dt8, \$19 as txta ", + "\$11 as dt1, \$12 as dt3, \$13 as dt4, \$14 as dt5, \$15 as dt7, \$16 as dt8, \$17 as txta, \$18 as boxa", array( // hstore array( @@ -138,9 +178,10 @@ $r = $c->execParams("SELECT \$1 as hs, \$2 as iv, \$3 as oids, \$4 as js, \$5 as new pq\Datetime, new pq\Datetime, new pq\Datetime, - new pq\Datetime, - new pq\Datetime, + // text array [new Text(0), new Text(" or "), new Text(true)], + // box array + [new Box(new Point(1,2), new Point(2,3)), new Box(new Point(3,4), new Point(4,5))], ), array( $t["hstore"]->oid, @@ -154,14 +195,13 @@ $r = $c->execParams("SELECT \$1 as hs, \$2 as iv, \$3 as oids, \$4 as js, \$5 as $t["float4"]->oid, $t["bool"]->oid, $t["date"]->oid, - $t["abstime"]->oid, $t["timestamp"]->oid, $t["timestamptz"]->oid, $t["date"]->oid, - $t["abstime"]->oid, $t["timestamp"]->oid, $t["timestamptz"]->oid, - $t["_text"]->oid + $t["_text"]->oid, + $t["_box"]->oid ) ); @@ -208,11 +248,11 @@ array(1) { int(1343423) } [3]=> - object(stdClass)#%d (3) { + array(3) { ["int"]=> int(123) ["obj"]=> - object(stdClass)#%d (3) { + array(3) { ["a"]=> int(1) ["b"]=> @@ -280,39 +320,28 @@ array(1) { string(3) "UTC" } [11]=> - object(pq\DateTime)#%d (4) { - ["format"]=> - string(11) "Y-m-d H:i:s" - ["date"]=> - string(26) "%d-%d-%d %d:%d:%d.000000" - ["timezone_type"]=> - int(1) - ["timezone"]=> - string(%d) "%s" - } - [12]=> object(pq\DateTime)#%d (4) { ["format"]=> string(13) "Y-m-d H:i:s.u" ["date"]=> - string(26) "%d-%d-%d %d:%d:%d.000000" + string(26) "%d-%d-%d %d:%d:%d.%d" ["timezone_type"]=> int(3) ["timezone"]=> string(3) "UTC" } - [13]=> + [12]=> object(pq\DateTime)#%d (4) { ["format"]=> string(14) "Y-m-d H:i:s.uO" ["date"]=> - string(26) "%d-%d-%d %d:%d:%d.000000" + string(26) "%d-%d-%d %d:%d:%d.%d" ["timezone_type"]=> int(1) ["timezone"]=> string(%d) "%s" } - [14]=> + [13]=> object(pq\DateTime)#%d (4) { ["format"]=> string(5) "Y-m-d" @@ -323,40 +352,29 @@ array(1) { ["timezone"]=> string(3) "UTC" } - [15]=> - object(pq\DateTime)#%d (4) { - ["format"]=> - string(11) "Y-m-d H:i:s" - ["date"]=> - string(26) "%d-%d-%d %d:%d:%d.000000" - ["timezone_type"]=> - int(1) - ["timezone"]=> - string(%d) "%s" - } - [16]=> + [14]=> object(pq\DateTime)#%d (4) { ["format"]=> string(13) "Y-m-d H:i:s.u" ["date"]=> - string(26) "%d-%d-%d %d:%d:%d.000000" + string(26) "%d-%d-%d %d:%d:%d.%d" ["timezone_type"]=> int(3) ["timezone"]=> string(3) "UTC" } - [17]=> - object(pq\DateTime)#159 (4) { + [15]=> + object(pq\DateTime)#%d (4) { ["format"]=> string(14) "Y-m-d H:i:s.uO" ["date"]=> - string(26) "%d-%d-%d %d:%d:%d.000000" + string(26) "%d-%d-%d %d:%d:%d.%d" ["timezone_type"]=> int(1) ["timezone"]=> string(%d) "%s" } - [18]=> + [16]=> array(3) { [0]=> string(1) "0" @@ -365,6 +383,43 @@ array(1) { [2]=> string(1) "1" } + [17]=> + array(2) { + [0]=> + object(Box)#%d (2) { + ["p1"]=> + object(Point)#%d (2) { + ["x"]=> + float(2) + ["y"]=> + float(3) + } + ["p2"]=> + object(Point)#%d (2) { + ["x"]=> + float(1) + ["y"]=> + float(2) + } + } + [1]=> + object(Box)#%d (2) { + ["p1"]=> + object(Point)#%d (2) { + ["x"]=> + float(4) + ["y"]=> + float(5) + } + ["p2"]=> + object(Point)#%d (2) { + ["x"]=> + float(3) + ["y"]=> + float(4) + } + } + } } } Done