]> granicus.if.org Git - postgis/commitdiff
Test more TopoGeometry creation
authorSandro Santilli <strk@keybit.net>
Thu, 29 Dec 2011 11:18:08 +0000 (11:18 +0000)
committerSandro Santilli <strk@keybit.net>
Thu, 29 Dec 2011 11:18:08 +0000 (11:18 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@8612 b70326c6-7e19-0410-871a-916f4a2858ee

topology/test/regress/createtopogeom.sql
topology/test/regress/createtopogeom_expected

index 655d0a62d318723cd1627b2c2fabe358456997e3..0d81573017ab6aecd7a54203e699ae3b6be1879d 100644 (file)
@@ -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');
index fdc19d3b70eaadb10cc39d4c2540eb3947b13023..7e5a6b3c56904ed89458c3756a3c021b74ef2362 100644 (file)
@@ -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