1\set VERBOSITY terse 2set client_min_messages to ERROR; 3 4SELECT topology.CreateTopology('MiX') > 0; 5 6-- Fails due to missing layer 1 7SELECT topology.CreateTopoGeom( 8 'MiX', -- Topology name 9 3, -- Topology geometry type (polygon/multipolygon) 10 1, -- TG_LAYER_ID for this topology (from topology.layer) 11 '{{3,3},{6,3}}'); -- face_id:3 face_id:6 12 13CREATE TABLE "MiX".poi (id int); 14SELECT 'l1', topology.AddTopoGeometryColumn('MiX', 'MiX', 'poi', 'feat', 'POINT'); 15 16-- A Layer of type 1 (POINT) cannot contain a TopoGeometry of type 2 (LINE) 17SELECT topology.CreateTopoGeom( 'MiX', 2, 1, '{{12,2}}'); 18-- A Layer of type 1 (POINT) cannot contain a TopoGeometry of type 3 (POLY) 19SELECT topology.CreateTopoGeom( 'MiX', 3, 1, '{{13,3}}'); 20-- A Layer of type 1 (POINT) cannot contain a TopoGeometry of type 4 (COLL.) 21SELECT topology.CreateTopoGeom( 'MiX', 4, 1, '{{12,2}}'); 22 23-- Node 78 does not exist in topology MiX (trigger on "relation" table) 24SELECT topology.CreateTopoGeom( 'MiX', 1, 1, '{{78,1}}'); 25 26SELECT 'n1', topology.addNode('MiX', 'POINT(0 0)'); 27 28-- Success ! 29SELECT layer_id(tg), id(tg), type(tg) FROM ( 30 SELECT topology.CreateTopoGeom( 'MiX', 1, 1, '{{1,1}}') as tg 31) foo; 32 33-- Invalid TopoGeometry type (out of range) 34SELECT CreateTopoGeom( 'MiX', 5, 1, '{{1,1}}'); 35SELECT CreateTopoGeom( 'MiX', 0, 1, '{{1,1}}'); 36 37CREATE TABLE "MiX".f_lineal (id int); 38SELECT 'l2', AddTopoGeometryColumn('MiX', 'MiX', 'f_lineal', 'feat', 'LINE'); 39 40SELECT 'n2', addNode('MiX', 'POINT(10 0)'); 41SELECT 'e1', addEdge('MiX', 'LINESTRING(0 0, 10 0)'); 42 43SELECT CreateTopoGeom( 'MiX', 2, 2, '{{1,1}}'); -- wrong prim. type 44SELECT 'L1', ST_AsText(CreateTopoGeom( 'MiX', 2, 2, '{{1,2}}')); -- fine 45 46CREATE TABLE "MiX".f_areal (id int); 47SELECT 'l3', AddTopoGeometryColumn('MiX', 'MiX', 'f_areal', 'feat', 'POLYGON'); 48 49SELECT 'e2', addEdge('MiX', 'LINESTRING(10 0, 5 5, 0 0)'); 50SELECT 'f1', addFace('MiX', 'POLYGON((0 0, 10 0, 5 5, 0 0))'); 51 52SELECT 'A1', CreateTopoGeom( 'MiX', 2, 3, '{{1,3}}'); -- wrong tg type 53SELECT 'A1', CreateTopoGeom( 'MiX', 3, 3, '{{1,2}}'); -- wrong prim. type 54SELECT 'A1', ST_AsText(CreateTopoGeom( 'MiX', 3, 3, '{{1,3}}')); -- fine 55 56CREATE TABLE "MiX".f_mix (id int); 57SELECT 'l4', AddTopoGeometryColumn('MiX', 'MiX', 'f_mix', 'feat', 'COLLECTION'); 58SELECT 'MP', ST_AsText(CreateTopoGeom( 'MiX', 1, 4, '{{1,1}}')); -- fine point 59SELECT 'ML', ST_AsText(CreateTopoGeom( 'MiX', 2, 4, '{{1,2}}')); -- fine line 60SELECT 'MA', ST_AsText(CreateTopoGeom( 'MiX', 3, 4, '{{1,3}}')); -- fine area 61SELECT 'MM', ST_AsText(CreateTopoGeom( 'MiX', 4, 4, '{{1,3},{1,2},{1,1}}')); -- fine mix 62 63-- Test emptyness { 64SELECT 'POINT EMPTY', ST_AsEWKT( CreateTopoGeom( 'MiX', 1, 4, '{{0,0}}' ) ); 65SELECT 'LINESTRING EMPTY', ST_AsEWKT( CreateTopoGeom( 'MiX', 2, 4, '{{0,0}}' ) ); 66SELECT 'POLYGON EMPTY', ST_AsEWKT( CreateTopoGeom( 'MiX', 3, 4, '{{0,0}}' ) ); 67SELECT 'GEOMETRYCOLLECTION EMPTY', ST_AsEWKT( CreateTopoGeom( 'MiX', 4, 4, '{{0,0}}' ) ); 68-- } Test emptyness 69 70SELECT DropTopology('MiX'); 71