[geos-commits] r2422 - in trunk/tests/unit: . capi

svn_geos at osgeo.org svn_geos at osgeo.org
Wed Apr 29 19:44:04 EDT 2009


Author: mloskot
Date: 2009-04-29 19:44:04 -0400 (Wed, 29 Apr 2009)
New Revision: 2422

Added:
   trunk/tests/unit/capi/GEOSContainsTest.cpp
   trunk/tests/unit/capi/GEOSWithinTest.cpp
Modified:
   trunk/tests/unit/Makefile.am
Log:
Added new unit tests for C API: GEOSWithinTest and GEOSContainsTest. This is check and response for problems reporting in Ticket #250. Running the new tests does not reproduce the problem, so it likely has been fixed or the bug is somewhere else (i.e. Django layers).

Modified: trunk/tests/unit/Makefile.am
===================================================================
--- trunk/tests/unit/Makefile.am	2009-04-29 09:44:37 UTC (rev 2421)
+++ trunk/tests/unit/Makefile.am	2009-04-29 23:44:04 UTC (rev 2422)
@@ -82,6 +82,8 @@
 	util/UniqueCoordinateArrayFilterTest.cpp \
 	capi/GEOSCoordSeqTest.cpp \
 	capi/GEOSGeomToWKTTest.cpp \
+	capi/GEOSContainsTest.cpp \
+	capi/GEOSWithinTest.cpp \
 	capi/GEOSSimplifyTest.cpp \
 	capi/GEOSPreparedGeometryTest.cpp \
 	capi/GEOSPolygonizer_getCutEdgesTest.cpp

Added: trunk/tests/unit/capi/GEOSContainsTest.cpp
===================================================================
--- trunk/tests/unit/capi/GEOSContainsTest.cpp	                        (rev 0)
+++ trunk/tests/unit/capi/GEOSContainsTest.cpp	2009-04-29 23:44:04 UTC (rev 2422)
@@ -0,0 +1,122 @@
+// $Id$
+// 
+// Test Suite for C-API GEOSContains
+
+#include <tut.hpp>
+// geos
+#include <geos_c.h>
+// std
+#include <cstdarg>
+#include <cstdio>
+#include <cstdlib>
+#include <memory>
+
+namespace tut
+{
+    //
+    // Test Group
+    //
+
+    // Common data used in test cases.
+    struct test_capigeoscontains_data
+	{
+	    GEOSGeometry* geom1_;
+	    GEOSGeometry* geom2_;
+
+		static void notice(const char *fmt, ...)
+		{
+			std::fprintf( stdout, "NOTICE: ");
+
+			va_list ap;
+			va_start(ap, fmt);
+			std::vfprintf(stdout, fmt, ap);
+			va_end(ap);
+		
+			std::fprintf(stdout, "\n");
+		}
+
+		test_capigeoscontains_data()
+            : geom1_(0), geom2_(0)
+		{
+			initGEOS(notice, notice);
+		}		
+
+		~test_capigeoscontains_data()
+		{
+            GEOSGeom_destroy(geom1_);
+            GEOSGeom_destroy(geom2_);
+            geom1_ = 0;
+            geom2_ = 0;
+			finishGEOS();
+		}
+
+	};
+
+	typedef test_group<test_capigeoscontains_data> group;
+	typedef group::object object;
+
+	group test_capigeoscontains_group("capi::GEOSContains");
+
+    //
+    // Test Cases
+    //
+
+    template<>
+    template<>
+    void object::test<1>()
+    {
+	    geom1_ = GEOSGeomFromWKT("POLYGON EMPTY");
+	    geom2_ = GEOSGeomFromWKT("POLYGON EMPTY");
+
+		ensure( 0 != geom1_ );
+		ensure( 0 != geom2_ );
+
+        char const r1 = GEOSContains(geom1_, geom2_);
+
+		ensure_equals(r1, 0);
+
+        char const r2 = GEOSContains(geom2_, geom1_);
+
+		ensure_equals(r2, 0);
+    }
+
+    template<>
+    template<>
+    void object::test<2>()
+    {
+	    geom1_ = GEOSGeomFromWKT("POLYGON((1 1,1 5,5 5,5 1,1 1))");
+	    geom2_ = GEOSGeomFromWKT("POINT(2 2)");
+		
+        ensure( 0 != geom1_ );
+		ensure( 0 != geom2_ );
+
+        char const r1 = GEOSContains(geom1_, geom2_);
+
+		ensure_equals(int(r1), 1);
+
+        char const r2 = GEOSContains(geom2_, geom1_);
+
+		ensure_equals(int(r2), 0);
+    }
+    
+    template<>
+    template<>
+    void object::test<3>()
+    {
+	    geom1_ = GEOSGeomFromWKT("MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)))");
+	    geom2_ = GEOSGeomFromWKT("POLYGON((1 1,1 2,2 2,2 1,1 1))");
+		
+        ensure( 0 != geom1_ );
+		ensure( 0 != geom2_ );
+
+        char const r1 = GEOSContains(geom1_, geom2_);
+
+		ensure_equals(int(r1), 1);
+        
+        char const r2 = GEOSContains(geom2_, geom1_);
+
+		ensure_equals(int(r2), 0);
+    }
+ 
+} // namespace tut
+


Property changes on: trunk/tests/unit/capi/GEOSContainsTest.cpp
___________________________________________________________________
Name: svn:keywords
   + Id

Added: trunk/tests/unit/capi/GEOSWithinTest.cpp
===================================================================
--- trunk/tests/unit/capi/GEOSWithinTest.cpp	                        (rev 0)
+++ trunk/tests/unit/capi/GEOSWithinTest.cpp	2009-04-29 23:44:04 UTC (rev 2422)
@@ -0,0 +1,122 @@
+// $Id$
+// 
+// Test Suite for C-API GEOSWithin
+
+#include <tut.hpp>
+// geos
+#include <geos_c.h>
+// std
+#include <cstdarg>
+#include <cstdio>
+#include <cstdlib>
+#include <memory>
+
+namespace tut
+{
+    //
+    // Test Group
+    //
+
+    // Common data used in test cases.
+    struct test_capigeoswithin_data
+	{
+	    GEOSGeometry* geom1_;
+	    GEOSGeometry* geom2_;
+
+		static void notice(const char *fmt, ...)
+		{
+			std::fprintf( stdout, "NOTICE: ");
+
+			va_list ap;
+			va_start(ap, fmt);
+			std::vfprintf(stdout, fmt, ap);
+			va_end(ap);
+		
+			std::fprintf(stdout, "\n");
+		}
+
+		test_capigeoswithin_data()
+            : geom1_(0), geom2_(0)
+		{
+			initGEOS(notice, notice);
+		}		
+
+		~test_capigeoswithin_data()
+		{
+            GEOSGeom_destroy(geom1_);
+            GEOSGeom_destroy(geom2_);
+            geom1_ = 0;
+            geom2_ = 0;
+			finishGEOS();
+		}
+
+	};
+
+	typedef test_group<test_capigeoswithin_data> group;
+	typedef group::object object;
+
+	group test_capigeoswithin_group("capi::GEOSWithin");
+
+    //
+    // Test Cases
+    //
+
+    template<>
+    template<>
+    void object::test<1>()
+    {
+	    geom1_ = GEOSGeomFromWKT("POLYGON EMPTY");
+	    geom2_ = GEOSGeomFromWKT("POLYGON EMPTY");
+
+		ensure( 0 != geom1_ );
+		ensure( 0 != geom2_ );
+
+        char const r1 = GEOSWithin(geom1_, geom2_);
+
+		ensure_equals(r1, 0);
+
+        char const r2 = GEOSWithin(geom2_, geom1_);
+
+		ensure_equals(r2, 0);
+    }
+
+    template<>
+    template<>
+    void object::test<2>()
+    {
+	    geom1_ = GEOSGeomFromWKT("POLYGON((1 1,1 5,5 5,5 1,1 1))");
+	    geom2_ = GEOSGeomFromWKT("POINT(2 2)");
+		
+        ensure( 0 != geom1_ );
+		ensure( 0 != geom2_ );
+
+        char const r1 = GEOSWithin(geom1_, geom2_);
+
+		ensure_equals(int(r1), 0);
+
+        char const r2 = GEOSWithin(geom2_, geom1_);
+
+		ensure_equals(int(r2), 1);
+    }
+    
+    template<>
+    template<>
+    void object::test<3>()
+    {
+	    geom1_ = GEOSGeomFromWKT("MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)))");
+	    geom2_ = GEOSGeomFromWKT("POLYGON((1 1,1 2,2 2,2 1,1 1))");
+		
+        ensure( 0 != geom1_ );
+		ensure( 0 != geom2_ );
+
+        char const r1 = GEOSWithin(geom1_, geom2_);
+
+		ensure_equals(int(r1), 0);
+        
+        char const r2 = GEOSWithin(geom2_, geom1_);
+
+		ensure_equals(int(r2), 1);
+    }
+ 
+} // namespace tut
+


Property changes on: trunk/tests/unit/capi/GEOSWithinTest.cpp
___________________________________________________________________
Name: svn:keywords
   + Id



More information about the geos-commits mailing list