From: Sandro Santilli Date: Thu, 29 Dec 2011 11:18:08 +0000 (+0000) Subject: Test more TopoGeometry creation X-Git-Tag: 2.0.0alpha1~263 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9cc14498a064ebd33fe82009034f344531c33651;p=postgis Test more TopoGeometry creation git-svn-id: http://svn.osgeo.org/postgis/trunk@8612 b70326c6-7e19-0410-871a-916f4a2858ee --- diff --git a/topology/test/regress/createtopogeom.sql b/topology/test/regress/createtopogeom.sql index 655d0a62d..0d8157301 100644 --- a/topology/test/regress/createtopogeom.sql +++ b/topology/test/regress/createtopogeom.sql @@ -1,5 +1,5 @@ \set VERBOSITY terse -set client_min_messages to WARNING; +set client_min_messages to ERROR; SELECT topology.CreateTopology('MiX') > 0; @@ -11,7 +11,7 @@ SELECT topology.CreateTopoGeom( '{{3,3},{6,3}}'); -- face_id:3 face_id:6 CREATE TABLE "MiX".poi (id int); -SELECT topology.AddTopoGeometryColumn('MiX', 'MiX', 'poi', 'feat', 'POINT'); +SELECT 'l1', topology.AddTopoGeometryColumn('MiX', 'MiX', 'poi', 'feat', 'POINT'); -- A Layer of type 1 (POINT) cannot contain a TopoGeometry of type 2 (LINE) SELECT topology.CreateTopoGeom( 'MiX', 2, 1, '{{12,2}}'); @@ -31,7 +31,33 @@ SELECT layer_id(tg), id(tg), type(tg) FROM ( ) foo; -- Invalid TopoGeometry type (out of range) -SELECT topology.CreateTopoGeom( 'MiX', 5, 1, '{{12,2}}'); -SELECT topology.CreateTopoGeom( 'MiX', 0, 1, '{{12,2}}'); +SELECT CreateTopoGeom( 'MiX', 5, 1, '{{1,1}}'); +SELECT CreateTopoGeom( 'MiX', 0, 1, '{{1,1}}'); -SELECT topology.DropTopology('MiX'); +CREATE TABLE "MiX".f_lineal (id int); +SELECT 'l2', AddTopoGeometryColumn('MiX', 'MiX', 'f_lineal', 'feat', 'LINE'); + +SELECT 'n2', addNode('MiX', 'POINT(10 0)'); +SELECT 'e1', addEdge('MiX', 'LINESTRING(0 0, 10 0)'); + +SELECT CreateTopoGeom( 'MiX', 2, 2, '{{1,1}}'); -- wrong prim. type +SELECT 'L1', ST_AsText(CreateTopoGeom( 'MiX', 2, 2, '{{1,2}}')); -- fine + +CREATE TABLE "MiX".f_areal (id int); +SELECT 'l3', AddTopoGeometryColumn('MiX', 'MiX', 'f_areal', 'feat', 'POLYGON'); + +SELECT 'e2', addEdge('MiX', 'LINESTRING(10 0, 5 5, 0 0)'); +SELECT 'f1', addFace('MiX', 'POLYGON((0 0, 10 0, 5 5, 0 0))'); + +SELECT 'A1', CreateTopoGeom( 'MiX', 2, 3, '{{1,3}}'); -- wrong tg type +SELECT 'A1', CreateTopoGeom( 'MiX', 3, 3, '{{1,2}}'); -- wrong prim. type +SELECT 'A1', ST_AsText(CreateTopoGeom( 'MiX', 3, 3, '{{1,3}}')); -- fine + +CREATE TABLE "MiX".f_mix (id int); +SELECT 'l4', AddTopoGeometryColumn('MiX', 'MiX', 'f_mix', 'feat', 'COLLECTION'); +SELECT 'MP', ST_AsText(CreateTopoGeom( 'MiX', 1, 4, '{{1,1}}')); -- fine point +SELECT 'ML', ST_AsText(CreateTopoGeom( 'MiX', 2, 4, '{{1,2}}')); -- fine line +SELECT 'MA', ST_AsText(CreateTopoGeom( 'MiX', 3, 4, '{{1,3}}')); -- fine area +SELECT 'MM', ST_AsText(CreateTopoGeom( 'MiX', 4, 4, '{{1,3},{1,2},{1,1}}')); -- fine mix + +SELECT DropTopology('MiX'); diff --git a/topology/test/regress/createtopogeom_expected b/topology/test/regress/createtopogeom_expected index fdc19d3b7..7e5a6b3c5 100644 --- a/topology/test/regress/createtopogeom_expected +++ b/topology/test/regress/createtopogeom_expected @@ -1,6 +1,6 @@ t ERROR: No layer with id 1 is registered with topology MiX -1 +l1|1 ERROR: A Layer of type 1 cannot contain a TopoGeometry of type 2 ERROR: A Layer of type 1 cannot contain a TopoGeometry of type 3 ERROR: A Layer of type 1 cannot contain a TopoGeometry of type 4 @@ -9,4 +9,20 @@ n1|1 1|2|1 ERROR: Invalid TopoGeometry type 5 (must be in the range 1..4) ERROR: Invalid TopoGeometry type 0 (must be in the range 1..4) +l2|2 +n2|2 +e1|1 +ERROR: A TopoGeometry of type 2 cannot contain topology elements of type 1 +L1|LINESTRING(0 0,10 0) +l3|3 +e2|2 +f1|1 +ERROR: A Layer of type 3 cannot contain a TopoGeometry of type 2 +ERROR: A TopoGeometry of type 3 cannot contain topology elements of type 2 +A1|POLYGON((10 0,0 0,5 5,10 0)) +l4|4 +MP|POINT(0 0) +ML|LINESTRING(0 0,10 0) +MA|POLYGON((10 0,0 0,5 5,10 0)) +MM|GEOMETRYCOLLECTION EMPTY Topology 'MiX' dropped