]> granicus.if.org Git - postgis/commitdiff
Add regression test for TopoGeo_AddPoint
authorSandro Santilli <strk@keybit.net>
Tue, 3 Jan 2012 10:39:38 +0000 (10:39 +0000)
committerSandro Santilli <strk@keybit.net>
Tue, 3 Jan 2012 10:39:38 +0000 (10:39 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@8651 b70326c6-7e19-0410-871a-916f4a2858ee

topology/test/Makefile
topology/test/regress/topogeo_addpoint.sql [new file with mode: 0644]
topology/test/regress/topogeo_addpoint_expected [new file with mode: 0644]

index 111bd22512ab21f1705dcfc262d0d902a9420ff5..56c729b3f43fe8fa9e8db8823aa212de11a76e51 100644 (file)
@@ -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 (file)
index 0000000..4399dfe
--- /dev/null
@@ -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 (file)
index 0000000..dde51d1
--- /dev/null
@@ -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