[geos-commits] r2400 - in trunk/tests/unit: . operation operation/valid

svn_geos at osgeo.org svn_geos at osgeo.org
Tue Apr 21 10:03:45 EDT 2009


Author: strk
Date: 2009-04-21 10:03:45 -0400 (Tue, 21 Apr 2009)
New Revision: 2400

Added:
   trunk/tests/unit/operation/valid/
   trunk/tests/unit/operation/valid/IsValidTest.cpp
Modified:
   trunk/tests/unit/Makefile.am
Log:
Port IsValidOp unit test

Modified: trunk/tests/unit/Makefile.am
===================================================================
--- trunk/tests/unit/Makefile.am	2009-04-21 11:14:01 UTC (rev 2399)
+++ trunk/tests/unit/Makefile.am	2009-04-21 14:03:45 UTC (rev 2400)
@@ -71,6 +71,7 @@
 	operation/overlay/OffsetPointGeneratorTest.cpp \
 	operation/overlay/OverlayResultValidatorTest.cpp \
 	operation/union/CascadedPolygonUnionTest.cpp \
+	operation/valid/IsValidTest.cpp \
 	precision/GeometrySnapperTest.cpp \
 	precision/LineStringSnapperTest.cpp \
 	precision/SimpleGeometryPrecisionReducerTest.cpp \

Added: trunk/tests/unit/operation/valid/IsValidTest.cpp
===================================================================
--- trunk/tests/unit/operation/valid/IsValidTest.cpp	                        (rev 0)
+++ trunk/tests/unit/operation/valid/IsValidTest.cpp	2009-04-21 14:03:45 UTC (rev 2400)
@@ -0,0 +1,78 @@
+// $Id$
+// 
+// Test Suite for geos::operation::valid::IsValidOp class
+// Ported from JTS junit/operation/valid/IsValidTest.java rev. 1.1
+
+#include <tut.hpp>
+// geos
+#include <geos/operation/valid/IsValidOp.h>
+#include <geos/geom/Coordinate.h>
+#include <geos/geom/CoordinateArraySequence.h>
+#include <geos/geom/Dimension.h>
+#include <geos/geom/Geometry.h>
+#include <geos/geom/LineString.h>
+#include <geos/geom/GeometryFactory.h>
+#include <geos/geom/PrecisionModel.h>
+#include <geos/operation/valid/TopologyValidationError.h>
+#include <geos/platform.h> // for ISNAN
+// std
+#include <string>
+#include <memory>
+
+using namespace geos::geom;
+//using namespace geos::operation;
+using namespace geos::operation::valid;
+
+namespace tut
+{
+    //
+    // Test Group
+    //
+
+    struct test_isvalidop_data
+    {
+	typedef std::auto_ptr<Geometry> GeomPtr;
+
+        geos::geom::PrecisionModel pm_;
+        geos::geom::GeometryFactory factory_;
+
+        test_isvalidop_data()
+			: pm_(1), factory_(&pm_, 0)
+        {}
+    };
+
+    typedef test_group<test_isvalidop_data> group;
+    typedef group::object object;
+
+    group test_isvalidop_group("geos::operation::valid::IsValidOp");
+
+    //
+    // Test Cases
+    //
+
+    // 1 - testInvalidCoordinate
+    template<>
+    template<>
+    void object::test<1>()
+    {
+	CoordinateSequence* cs = new CoordinateArraySequence();
+	cs->add(Coordinate(0.0, 0.0));
+	cs->add(Coordinate(1.0, DoubleNotANumber));
+	GeomPtr line ( factory_.createLineString(cs) );
+
+
+	IsValidOp isValidOp(line.get());
+	bool valid = isValidOp.isValid();
+
+	TopologyValidationError* err = isValidOp.getValidationError();
+	const Coordinate& errCoord = err->getCoordinate();
+
+	ensure_equals( err->getErrorType(),
+	               TopologyValidationError::eInvalidCoordinate );
+
+	ensure(ISNAN(errCoord.y));
+	ensure_equals(valid, false);
+    }
+
+
+} // namespace tut



More information about the geos-commits mailing list