From 9f05015fa63b6eac026df2cde062eb66355cf10a Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Tue, 3 Jan 2012 10:39:38 +0000 Subject: [PATCH] Add regression test for TopoGeo_AddPoint git-svn-id: http://svn.osgeo.org/postgis/trunk@8651 b70326c6-7e19-0410-871a-916f4a2858ee --- topology/test/Makefile | 1 + topology/test/regress/topogeo_addpoint.sql | 44 +++++++++++++++++++ .../test/regress/topogeo_addpoint_expected | 19 ++++++++ 3 files changed, 64 insertions(+) create mode 100644 topology/test/regress/topogeo_addpoint.sql create mode 100644 topology/test/regress/topogeo_addpoint_expected diff --git a/topology/test/Makefile b/topology/test/Makefile index 111bd2251..56c729b3f 100644 --- a/topology/test/Makefile +++ b/topology/test/Makefile @@ -42,6 +42,7 @@ TESTS = regress/legacy_validate.sql regress/legacy_predicate.sql \ regress/st_remedgemodface.sql \ regress/topoelement.sql \ regress/topoelementarray_agg.sql \ + regress/topogeo_addpoint.sql \ regress/topogeometry_type.sql \ regress/topo2.5d.sql \ regress/totopogeom.sql \ diff --git a/topology/test/regress/topogeo_addpoint.sql b/topology/test/regress/topogeo_addpoint.sql new file mode 100644 index 000000000..4399dfe86 --- /dev/null +++ b/topology/test/regress/topogeo_addpoint.sql @@ -0,0 +1,44 @@ +\set VERBOSITY terse +set client_min_messages to ERROR; + +\i load_topology.sql + +-- Save max node id +select 'node'::text as what, max(node_id) INTO city_data.limits FROM city_data.node; + +-- Isolated point in universal face +SELECT 'iso_uni', TopoGeo_addPoint('city_data', 'POINT(38 26)'); + +-- Isolated point in face 3 +SELECT 'iso_f3', TopoGeo_addPoint('city_data', 'POINT(16 18)'); + +-- Existing isolated node +SELECT 'iso_ex', TopoGeo_addPoint('city_data', 'POINT(38 26)'); + +-- Existing isolated node within tolerance +SELECT 'iso_ex_tol', TopoGeo_addPoint('city_data', 'POINT(38 27)', 1.5); + +-- Existing non-isolated node +SELECT 'noniso_ex', TopoGeo_addPoint('city_data', 'POINT(25 30)'); + +-- Existing non-isolated node within tolerance (closer to edge) +SELECT 'noniso_ex_tol', TopoGeo_addPoint('city_data', 'POINT(26 30.2)', 3); + +-- Splitting edge +SELECT 'split', TopoGeo_addPoint('city_data', 'POINT(26 30.2)', 1); + +-- Check effect on nodes +SELECT 'N', n.node_id, n.containing_face, ST_AsText(n.geom) +FROM city_data.node n WHERE n.node_id > ( + SELECT max FROM city_data.limits WHERE what = 'node'::text ) +ORDER BY n.node_id; + +-- Check effect on edges (there should be one split) +WITH limits AS ( SELECT max FROM city_data.limits WHERE what = 'node'::text ) +SELECT 'E', n.edge_id, n.start_node, n.end_node + FROM city_data.edge n, limits m + WHERE n.start_node > m.max + OR n.end_node > m.max +ORDER BY n.edge_id; + +SELECT DropTopology('city_data'); diff --git a/topology/test/regress/topogeo_addpoint_expected b/topology/test/regress/topogeo_addpoint_expected new file mode 100644 index 000000000..dde51d111 --- /dev/null +++ b/topology/test/regress/topogeo_addpoint_expected @@ -0,0 +1,19 @@ +BEGIN +t +9 +22 +26 +COMMIT +iso_uni|23 +iso_f3|24 +iso_ex|23 +iso_ex_tol|23 +noniso_ex|2 +noniso_ex_tol|2 +split|25 +N|23|0|POINT(38 26) +N|24|3|POINT(16 18) +N|25||POINT(26 30) +E|2|2|25 +E|27|25|2 +Topology 'city_data' dropped -- 2.50.1