[geos-commits] r4175 - trunk/tests/unit/geom/Geometry

svn_geos at osgeo.org svn_geos at osgeo.org
Fri Mar 11 22:40:45 PST 2016


Author: mloskot
Date: 2016-03-11 22:40:45 -0800 (Fri, 11 Mar 2016)
New Revision: 4175

Modified:
   trunk/tests/unit/geom/Geometry/coversTest.cpp
Log:
Add test for Geometry::touches

Modified: trunk/tests/unit/geom/Geometry/coversTest.cpp
===================================================================
--- trunk/tests/unit/geom/Geometry/coversTest.cpp	2016-03-07 23:15:10 UTC (rev 4174)
+++ trunk/tests/unit/geom/Geometry/coversTest.cpp	2016-03-12 06:40:45 UTC (rev 4175)
@@ -1,12 +1,11 @@
-// 
-// Test Suite for Geometry's covers(), coveredBy() and contains() functions
+//
+// Test Suite for Geometry's touches() functions
 
 // tut
 #include <tut.hpp>
 // geos
 #include <geos/geom/GeometryFactory.h>
 #include <geos/geom/Geometry.h>
-#include <geos/geom/Polygon.h>
 #include <geos/io/WKTReader.h>
 // std
 #include <memory>
@@ -18,108 +17,96 @@
 // Test Group
 //
 
-struct test_contains_data
+struct test_touches_data
 {
-	typedef std::auto_ptr<geos::geom::Geometry> GeomAutoPtr;
-	typedef geos::geom::GeometryFactory GeometryFactory;
+    typedef std::auto_ptr<geos::geom::Geometry> GeomAutoPtr;
+    typedef geos::geom::GeometryFactory GeometryFactory;
 
-	geos::geom::GeometryFactory::unique_ptr factory;
-	geos::io::WKTReader reader;
+    geos::geom::GeometryFactory::unique_ptr factory;
+    geos::io::WKTReader reader;
 
-	test_contains_data()
-	    : factory(GeometryFactory::create())
-	    , reader(factory.get())
-	{}
+    test_touches_data()
+        : factory(GeometryFactory::create())
+        , reader(factory.get())
+    {}
 };
 
-typedef test_group<test_contains_data> group;
+typedef test_group<test_touches_data> group;
 typedef group::object object;
 
-group test_contains_data("geos::geom::Geometry::covers");
+group test_touches_data("geos::geom::Geometry::touches");
 
 //
 // Test Cases
 //
 
-// 1 - Boundaries touch, still g1 covers g2
+// 1 - Point/Point do not touch
 template<>
 template<>
 void object::test<1>()
 {
-	GeomAutoPtr g1(reader.read(
-		"POLYGON ((0 0, 0 100, 100 100, 100 0, 0 0))"
-	));
-	GeomAutoPtr g2(reader.read(
-		"POLYGON ((0 0, 0 100, 90 90, 90 0, 0 0))"
-	));
+    GeomAutoPtr g1(reader.read(
+        "POINT (0 0)"
+        ));
 
-	ensure( g1->covers(g2.get()) );
-	ensure( g2->coveredBy(g1.get()) );
+    GeomAutoPtr g2(reader.read(
+        "POINT (0 0)"
+        ));
 
+    ensure(!g1->touches(g2.get()));
+    ensure(!g2->touches(g1.get()));
 }
 
-// 2 - Polygon covers line (laying on it's boundary)
+// 2 - Line/Point do not touch if point is not on boundary
 template<>
 template<>
 void object::test<2>()
 {
-	GeomAutoPtr g1(reader.read(
-		"POLYGON ((0 0, 0 100, 100 100, 100 0, 0 0))"
-	));
-	GeomAutoPtr g2(reader.read(
-		"LINESTRING (0 0, 0 100)"
-	));
+    GeomAutoPtr g1(reader.read(
+        "LINESTRING(0 0, 1 1, 0 2)"
+        ));
 
-	ensure( g1->covers(g2.get()) );
-	ensure( g2->coveredBy(g1.get()) );
-	ensure( ! g1->contains(g2.get()) );
+    GeomAutoPtr g2(reader.read(
+        "POINT (1 1)"
+        ));
 
+    ensure(!g1->touches(g2.get()));
+    ensure(!g2->touches(g1.get()));
 }
 
-// 3 - Line covers point (laying on it's boundary or interior)
+// 3 - Line/Point touch
 template<>
 template<>
 void object::test<3>()
 {
-	GeomAutoPtr g1(reader.read(
-		"LINESTRING (0 0, 0 100)"
-	));
-	GeomAutoPtr g2(reader.read(
-		"POINT(0 0)"
-	));
+    GeomAutoPtr g1(reader.read(
+        "LINESTRING(0 0, 1 1, 0 2)"
+        ));
 
-	ensure( g1->covers(g2.get()) );
-	ensure( g2->coveredBy(g1.get()) );
-	ensure( ! g1->contains(g2.get()) );
+    GeomAutoPtr g2(reader.read(
+        "POINT (0 2)"
+        ));
 
-	g2.reset(reader.read(
-		"POINT(0 2)"
-	));
-
-	ensure( g1->covers(g2.get()) );
-	ensure( g2->coveredBy(g1.get()) );
-	ensure( g1->contains(g2.get()) );
-
+    ensure(g1->touches(g2.get()));
+    ensure(g2->touches(g1.get()));
 }
 
-// 4 - http://trac.osgeo.org/geos/ticket/580
+// 4 - Line/Point touch (FP coordinates)
 template<>
 template<>
 void object::test<4>()
 {
-	GeomAutoPtr g1(reader.read(
-		"POLYGON ((-1.183864 52.951915, -1.183862 52.951903, -1.183890 52.951900, -1.183924 52.951897, -1.183958 52.951894, -1.183954 52.951880, -1.183954 52.951878, -1.183932 52.951841, -1.183904 52.951844, -1.183870 52.951847, -1.183832 52.951852, -1.183824 52.951838, -1.183820 52.951830, -1.183870 52.951819, -1.183886 52.951815, -1.183890 52.951819, -1.183929 52.951810, -1.183909 52.951776, -1.183861 52.951787, -1.183853 52.951788, -1.183842 52.951770, -1.183970 52.951742, -1.183983 52.951763, -1.183963 52.951768, -1.183975 52.951788, -1.183994 52.951785, -1.184009 52.951807, -1.184002 52.951808, -1.184009 52.951835, -1.183990 52.951836, -1.183990 52.951836, -1.183990 52.951838, -1.184001 52.951880, -1.184018 52.951954, -1.184020 52.951956, -1.183998 52.951957, -1.183998 52.951956, -1.183996 52.951948, -1.183970 52.951906, -1.183936 52.951909, -1.183864 52.951915))"
-	));
-	GeomAutoPtr g2(reader.read(
-		"POINT (-1.183972 52.951871)"
-	));
+    GeomAutoPtr g1(reader.read(
+        "LINESTRING (-612844.96290006 279079.117329031,-257704.820935236 574364.179187424)"
+        ));
 
-	ensure( g1->covers(g2.get()) );
-	ensure( g2->coveredBy(g1.get()) );
-	ensure( g1->contains(g2.get()) );
+    GeomAutoPtr g2(reader.read(
+        "POINT (-257704.820935236 574364.179187424)"
+        ));
 
+    ensure(g1->touches(g2.get()));
+    ensure(g2->touches(g1.get()));
 }
 
-
 } // namespace tut
 



More information about the geos-commits mailing list